نیک آموز > وبلاگ > مهندسی داده > ۵ مرحله ساده برای تحلیل داده با ChatGPT و پایتون 
۵ مرحله ساده برای تحلیل داده با ChatGPT و پایتون 

۵ مرحله ساده برای تحلیل داده با ChatGPT و پایتون 

نوشته شده توسط: نگین فاتحی
تاریخ انتشار: ۱۸ شهریور ۱۴۰۳
آخرین بروزرسانی: 23 اسفند 1404
زمان مطالعه: 7 دقیقه
۵
(۱)

در تحلیل داده با ChatGPT و پایتون، همچنین تحلیل داده با هوش مصنوعی ChatGPT راهی ساده و کاربردی برای ساده‌سازی این فرآیند پیچیده است. داده‌ها در مهندسی داده (Data Engineering) بخش بزرگی از فرآیند علم داده یا “Data Science” را تشکیل می‌دهند. در CRISP-DM، این مرحله فرآیند «آماده‌سازی داده» یا “Data Preparation” نامیده می‌شود. این زمینه شامل وظایفی مانند جذب، تبدیل و تضمین کیفیت داده است. 

در مقاله پیش‌رو، ما وظایف معمول مهندسی داده را با استفاده از ChatGPT و پایتون حل خواهیم کرد. هدف ما از این کار، پیوند دو رشته پرطرفدار این روزها است: مهندسی داده و مهندسی پرامپت.

۵ مرحله از مهندسی داده تا مهندسی پرامپت با ChatGPT

در این بخش، پنج مرحله را با یکدیگر طی می‌کنیم تا با کمک مهندسی پرامپت (Prompt Engineering)، آماده‌سازی داده‌ها را ممکن کنیم. ما در این مقاله، از نسخه ۳.۵ ChatGPT استفاده کردیم.

  1. ایجاد یک فریم داده

بیایید در ابتدا، با یک مشکل ساده شروع کنیم. بنابراین Data Frame ساده‌ای را با کمک کتاب‌خانه Pandas پایتون و یک مجموعه داده نمونه ایجاد کنیم. جدول ۱ شاخص‌های ملی است که توسط بانک جهانی آمریکا ارائه شده‌اند.

قاره  کشور سال  دسته بندی متغیر مقدار
آسیا چین  ۲۰۲۲ اقتصاد  تولید ناخالص داخلی  ۱۸.۱
آسیا  چین  ۲۰۲۲ جمعیت شناسی جمعیت ۱۴۱۲
آمریکای شمالی  ایالات متحده آمریکا ۲۰۲۲ اقتصاد تولید ناخالص داخلی  ۲۵.۵
آمریکای شمالی ایالات متحده آمریکا ۲۰۲۲ جمعیت شناسی جمعیت ۳۳۳
اروپا آلمان ۲۰۲۲ اقتصاد تولید ناخالص داخلی  ۳.۹
اروپا آلمان ۲۰۲۲ جمعیت شناسی جمعیت ۸۴

ایجاد یک فریم داده

به‌منظور ایجاد یک فریم داده از نمونه بالا، مکالمه جدیدی را با ChatGPT آغاز می‌کنیم و پرامپت زیر را به او می‌دهیم:

Create a Pandas table with the following data:
Continent, Country, Year, Category, Variable, Value
Asia, China, 2022, Economy, GDP, 18.1
Asia, China, 2022, Demographics, Population, 1412
North America, USA, 2022, Economy, GDP, 25.5
North America, USA, 2022, Demographics, Population, 333
Europe, Germany, 2022, Economy, GDP, 3.9
Europe, Germany, 2022, Demographics, Population, 84

در پاسخ، این هوش مصنوعی کد پایتون زیر را تولید کرد:

import pandas as pd
data = {
   'Continent': ['Asia', 'Asia', 'North America', 'North America', 'Europe', 'Europe'],
   'Country': ['China', 'China', 'USA', 'USA', 'Germany', 'Germany'],
   'Year': [2022, 2022, 2022, 2022, 2022, 2022],
   'Category': ['Economy', 'Demographics', 'Economy', 'Demographics', 'Economy', 'Demographics'],
   'Variable': ['GDP', 'Population', 'GDP', 'Population', 'GDP', 'Population'],
   'Value': [18.1, 1412, 25.5, 333, 3.9, 84]
}
df = pd.DataFrame(data)
print(df)

هنگام اجرای اسکریپت، می‌بینیم که خروجی با مشخصات ما مطابقت دارد:

ایجاد یک فریم داده

با وجود آن‌که ما از نمونه‌ای برای آزمایش خود استفاده کردیم، اما کد تولیدشده در بخش‌های بعدی، در اصل می‌تواند مجموعه داده‌های بزرگ‌تری را مدیریت کند.

 

 💡 با آموزش دوره Data Lakehouse مقدماتی، تبدیل شوید به فردی که شرکت‌ها برایش رقابت می‌کنند.
  1. تبدیل و خلاصه کردن فریم داده

برای کار در زمینه علم داده، ساختار جدولی که با اولین پرامپت خود ایجاد کردیم، بهینه نیست. در عوض، یک “Flat Table” قابلیت اسکن جدول و درک آن را بالاتر می‌برد. 

در جدول ۱، شاخص‎‌های «تولید ناخالص داخلی» و «جمعیت»، با دو ستون به نام‌های «متغیر» و «مقدار» نشان داده شده است. در مقابل، همان‌طور که در جدول ۲ می‌بینید، یک Flat Table شامل ستون‌های جداگانه برای هر شاخص خواهد بود.

قاره کشور سال تولید ناخالص داخلی جمعیت
آسیا چین ۲۰۲۲ ۱۸.۱ ۱۴۱۲
آمریکای شمالی ایالات متحده آمریکا ۲۰۲۲ ۲۵.۵ ۳۳۳
اروپا آلمان ۲۰۲۲ ۳.۹ ۸۴

تبدیل فرمت جدول ۱ به فرمت جدول ۲ “Pivoting” نامیده می‌شود. پس این بخش را هم با ChatGPT انجام می‌دهیم. برای این منظور، ما در گفت‌وگوی خود با این چت‌بات، پیام دوم را به‌شکل زیر نوشتیم:

Transform the table into the following format:
Continent, Country, Year, GDP, Population
Asia, China, 2022, 18.1, 1412
North America, USA, 2022, 25.5, 333
Europe, Germany, 2022, 3.9, 84

پرامپت بالا براساس نمونه‌ای از فرمت داده‌های مورد نیاز است. در نتیجه درخواست ما، ChatGPT کد پایتون را به‌صورت زیر تنظیم کرد:

import pandas as pd
data = {
   'Continent': ['Asia', 'Asia', 'North America', 'North America', 'Europe', 'Europe'],
   'Country': ['China', 'China', 'USA', 'USA', 'Germany', 'Germany'],
   'Year': [2022, 2022, 2022, 2022, 2022, 2022],
   'Category': ['Economy', 'Demographics', 'Economy', 'Demographics', 'Economy', 'Demographics'],
   'Variable': ['GDP', 'Population', 'GDP', 'Population', 'GDP', 'Population'],
   'Value': [18.1, 1412, 25.5, 333, 3.9, 84]
}
df = pd.DataFrame(data)
# Pivot the table
pivot_df = df.pivot_table(index=['Continent', 'Country', 'Year'], columns='Category', values='Value').reset_index()
# Rename the columns
pivot_df.columns.name = None
pivot_df.columns = [column if column != 'Variable' else None for column in pivot_df.columns]
print(pivot_df)

این کد به‌نظر درست می‌آید؛ اما با اجرای آن متوجه شدیم که خروجی آن چیزی نیست که ما درخواست کرده بودیم:

تبدیل و خلاصه کردن فریم داده

به‌جای ستون‌های «تولید ناخالص داخلی» و «جمعیت»، جدول شامل دو ستون به نام‌های «دموگرافیک» و «اقتصاد» است. برای رفع این مشکل، پرامپت بعدی را ارسال کردیم:

The columns are not correct, you should have used
the variables GDP and population

در پاسخ، ChatGPT اشتباه خود را تصحیح و نسخه دیگری از کد پایتون را به‌شکل زیر تولید کرد:

import pandas as pd
data = {
   'Continent': ['Asia', 'Asia', 'North America', 'North America', 'Europe', 'Europe'],
   'Country': ['China', 'China', 'USA', 'USA', 'Germany', 'Germany'],
   'Year': [2022, 2022, 2022, 2022, 2022, 2022],
   'Category': ['Economy', 'Demographics', 'Economy', 'Demographics', 'Economy', 'Demographics'],
   'Variable': ['GDP', 'Population', 'GDP', 'Population', 'GDP', 'Population'],
   'Value': [18.1, 1412, 25.5, 333, 3.9, 84]
}
df = pd.DataFrame(data)
# Pivot the table
pivot_df = df.pivot_table(index=['Continent', 'Country', 'Year'], columns='Variable', values='Value').reset_index()
# Rename the columns
pivot_df.columns.name = None
pivot_df.columns = ['Continent', 'Country', 'Year', 'GDP', 'Population']
print(pivot_df)

اجرای این اسکریپت در تحلیل داده با ChatGPT و پایتون نشان می‌دهد که Pivoting این‌بار به‌درستی انجام شده است؛ چون به خروجی زیر رسیدیم:

تبدیل و خلاصه کردن فریم داده

  1. غنی‌ سازی فریم داده

یکی دیگر از وظایف معمول مهندسی داده، غنی‌سازی مجموعه داده (Enrich a Dataset) با اطلاعات اضافی است. برای این منظور، ما از ChatGPT خواستیم که کدهای کشور ISO را با ارسال پیام زیر به داده‌های ما اضافه کند:

For each country, in the table above, add its ISO code

خروجی مدل رضایت‌بخش بود؛ چون پاسخ را تنظیم کرد و قطعه کد زیر را تحویل داد:

 

 💡 می‌خواهید بدانید Redis چگونه کار می‌کند؟ مقاله «ردیس چیست؟ راهنمای کامل Redis و معرفی ۱۰ نوع Data Type در آن» را بررسی کنید.
 
import pandas as pd
data = {
   'Continent': ['Asia', 'Asia', 'North America', 'North America', 'Europe', 'Europe'],
   'Country': ['China', 'China', 'USA', 'USA', 'Germany', 'Germany'],
   'Year': [2022, 2022, 2022, 2022, 2022, 2022],
   'Category': ['Economy', 'Demographics', 'Economy', 'Demographics', 'Economy', 'Demographics'],
   'Variable': ['GDP', 'Population', 'GDP', 'Population', 'GDP', 'Population'],
   'Value': [18.1, 1412, 25.5, 333, 3.9, 84]
}
iso_codes = {
   'China': 'CN',
   'USA': 'US',
   'Germany': 'DE'
}
df = pd.DataFrame(data)
# Add ISO code column
df['ISO Code'] = df['Country'].map(iso_codes)
# Pivot the table
pivot_df = df.pivot_table(index=['Continent', 'Country', 'ISO Code', 'Year'], columns='Variable', values='Value').reset_index()
# Rename the columns
pivot_df.columns.name = None
pivot_df.columns = ['Continent', 'Country', 'ISO Code', 'Year', 'GDP', 'Population']
print(pivot_df)

اجرای اسکریپت نشان می‌دهد که یک ستون جدید، با کدهای ISO به فریم داده اضافه شده است:

غنی‌سازی فریم داده

  1. استخراج یک ستون

اجازه دهید ستون جدید “GDP per capita” را با تقسیم تولید ناخالص داخلی یک کشور بر جمعیت آن استخراج کنیم. برای انجام این کار، ما این پیام را ارسال کردیم:

Derive a new column "GDP per capita" by dividing the GDP
of a country by its population size

در پاسخ، مدل کد را به‌صورت زیر اصلاح کرد:

 

اگر می‌خواهید داده‌ها را به تصمیم‌های هوشمند تبدیل کنید، مهندسی داده یاد بگیرید.
 
import pandas as pd
data = {
   'Continent': ['Asia', 'Asia', 'North America', 'North America', 'Europe', 'Europe'],
   'Country': ['China', 'China', 'USA', 'USA', 'Germany', 'Germany'],
   'Year': [2022, 2022, 2022, 2022, 2022, 2022],
   'Category': ['Economy', 'Demographics', 'Economy', 'Demographics', 'Economy', 'Demographics'],
   'Variable': ['GDP', 'Population', 'GDP', 'Population', 'GDP', 'Population']
   'Value': [18.1, 1412, 25.5, 333, 3.9, 84]
}
iso_codes = {
   'China': 'CN',
   'USA': 'US',
   'Germany': 'DE'
}
df = pd.DataFrame(data)
# Add ISO code column
df['ISO Code'] = df['Country'].map(iso_codes)
# Pivot the table
pivot_df = df.pivot_table(index=['Continent', 'Country', 'ISO Code', 'Year'], columns='Variable', values='Value').reset_index()
# Calculate GDP per capita
pivot_df['GDP per capita'] = pivot_df['GDP'] / pivot_df['Population']
# Rename the columns
pivot_df.columns.name = None
pivot_df.columns = ['Continent', 'Country', 'ISO Code', 'Year', 'GDP', 'Population', 'GDP per capita']
print(pivot_df)

با اجرای این کد روی پایتون، خروجی مدنظرمان را به‌شکل زیر گرفتیم:

استخراج یک ستون

  1. تجزیه‌ و تحلیل داده‌‌ با ChatGPT و پایتون

پس از تکمیل Pivoting و تبدیل داده‌ها، ماجرای اصلی شروع می‌شود: تجزیه‌وتحلیل آن‌ها. اجازه دهید در نهایت ضریب همبستگی بین تولید ناخالص داخلی و جمعیت کشورها را محاسبه کنیم. برای این منظور، آخرین پرامپت را نوشته و به ChatGPT ارسال کردیم:

Use the table above to calculate the correlation coefficient between
the GDP and the population of the countries

خروجی این پرامپت، قطعه کد زیر شد:

import pandas as pd
data = {
   'Continent': ['Asia', 'Asia', 'North America', 'North America', 'Europe', 'Europe'],
   'Country': ['China', 'China', 'USA', 'USA', 'Germany', 'Germany'],
   'Year': [2022, 2022, 2022, 2022, 2022, 2022],
   'Category': ['Economy', 'Demographics', 'Economy', 'Demographics', 'Economy', 'Demographics'],
   'Variable': ['GDP', 'Population', 'GDP', 'Population', 'GDP', 'Population'],
   'Value': [18.1, 1412, 25.5, 333, 3.9, 84]
}
df = pd.DataFrame(data)
# Pivot the table
pivot_df = df.pivot_table(index=['Continent', 'Country', 'Year'], columns='Variable', values='Value').reset_index()
# Calculate correlation coefficient
correlation_coefficient = pivot_df['GDP'].corr(pivot_df['Population'])
print("Correlation Coefficient: {:.3f}".format(correlation_coefficient))

با اجرای این اسکریپت پایتون، یک همبستگی مثبت بین دو متغیر پیدا می‌کنیم که نشان از دقت ChatGPT است:

تجزیه‌وتحلیل داده‌ها

سخن پایانی تحلیل داده با ChatGPT و پایتون

 

در تحلیل داده با ChatGPT و پایتون، انجام وظایف علم داده با کمک هوش مصنوعی، بسیار جذاب و دل‌چسب است؛ چون دیگر درگیر وظایف روتین و معمولی نمی‌شویم. بنابراین می‌توانیم روی کارهای پیچیده و تحلیل‌های عمیق زمان بگذاریم و خلاقیت‌مان را دوچندان کنیم. استفاده از ChatGPT برای تحلیل داده در سطوح اولیه راه‌کار مناسبی است؛ اما پیش از به‌کارگیری کدها، باید خودتان دست‌به تست شوید. استفاده از Pylint – تحلیل‌گر کدهای استاتیک پایتون – هنوز هم در عصر هوش مصنوعی ایده خوبی برای به‌کارگیری کدهای تولیدشده AI است. 

شما درباره استفاده از هوش مصنوعی برای زمینه‌های پیچیده مانند علم داده چه فکری می‌کنید؟ تابه‌حال چند درصد از کارهای خودتان را با این مدل‌ها پیش برده‌اید؟ ما پذیرای دیدگاه تخصصی شما در این باره هستیم که می‌توانید در بخش نظرات همین مقاله، آن را با ما و سایر مخاطبان به‌اشتراک بگذارید. ما در نیک آموز منتظر نظرات ارزشمند شما درباره این مقاله هستیم.
 

 سوالات متداول تحلیل داده با ChatGPT و پایتون

۱. تحلیل داده با استفاده از ChatGPT و پایتون چه مزیتی دارد؟

استفاده از ChatGPT در کنار پایتون باعث می‌شود بسیاری از مراحل تکراری و زمان‌بر در پردازش داده‌ها سریع‌تر انجام شود. این ترکیب کمک می‌کند تمرکز تحلیل‌گر بیشتر روی تحلیل‌های عمیق و تصمیم‌گیری‌های مهم قرار بگیرد.

۲. داده‌ها چه نقشی در فرآیند علم داده دارند؟

داده‌ها بخش اساسی علم داده هستند و آماده‌سازی آن‌ها یکی از مهم‌ترین مراحل محسوب می‌شود. این مرحله شامل جمع‌آوری، تبدیل و بررسی کیفیت داده‌ها است تا اطلاعات برای تحلیل آماده شوند.

۳. منظور از مرحله آماده‌سازی داده در فرآیند تحلیل چیست؟

در این مرحله داده‌های خام پردازش می‌شوند تا برای تحلیل مناسب شوند. فعالیت‌هایی مانند پاک‌سازی داده، تغییر ساختار، و یکپارچه‌سازی اطلاعات در این بخش انجام می‌شود.

۴. فریم داده (DataFrame) در پایتون چه کاربردی دارد؟

فریم داده ساختاری جدولی برای ذخیره و مدیریت داده‌ها در پایتون است که با کتابخانه Pandas ایجاد می‌شود و امکان تحلیل و پردازش داده‌ها را ساده‌تر می‌کند.

۵. چرا تبدیل جدول داده‌ها به ساختار Flat Table اهمیت دارد؟

ساختار Flat Table باعث می‌شود داده‌ها خواناتر و قابل تحلیل‌تر شوند. در این نوع ساختار هر شاخص در ستون جداگانه قرار می‌گیرد و بررسی داده‌ها ساده‌تر انجام می‌شود.

۶. عملیات Pivoting در تحلیل داده به چه معناست؟

Pivoting فرآیندی است که در آن ساختار جدول تغییر می‌کند تا داده‌ها به شکل مناسب‌تری برای تحلیل سازمان‌دهی شوند؛ به‌طور معمول مقادیر یک ستون به ستون‌های جدید تبدیل می‌شوند.

۷. غنی‌سازی داده‌ها (Data Enrichment) چه مفهومی دارد؟

در این فرآیند اطلاعات جدیدی به داده‌های موجود اضافه می‌شود تا مجموعه داده کامل‌تر و کاربردی‌تر شود. این کار می‌تواند شامل افزودن شناسه‌ها، کدها یا ویژگی‌های جدید باشد.

۸. چگونه می‌توان یک شاخص جدید از داده‌های موجود استخراج کرد؟

با انجام محاسبات روی ستون‌های موجود می‌توان متغیرهای جدید ایجاد کرد. برای مثال تقسیم یک شاخص اقتصادی بر جمعیت می‌تواند شاخص سرانه آن را به دست دهد.

۹. ضریب همبستگی در تحلیل داده چه چیزی را نشان می‌دهد؟

ضریب همبستگی میزان رابطه بین دو متغیر را مشخص می‌کند. اگر مقدار آن مثبت باشد نشان می‌دهد که افزایش یکی از متغیرها معمولاً با افزایش متغیر دیگر همراه است.

۱۰. آیا کدهای تولیدشده توسط هوش مصنوعی باید بررسی شوند؟

بله، بهتر است کدهای تولیدشده قبل از استفاده بررسی و آزمایش شوند. استفاده از ابزارهای تحلیل کد مانند Pylint می‌تواند به شناسایی خطاها و بهبود کیفیت کد کمک کند.

 

 

 😐 در ادامه می‌توانید مقالات مرتبط و کاربردی دیگری را نیز مطالعه کنید:

 

 

 

چه رتبه ای می‌دهید؟

میانگین ۵ / ۵. از مجموع ۱

اولین نفر باش

title sign
معرفی نویسنده
نگین فاتحی
مقالات
35 مقاله توسط این نویسنده
نگین فاتحی

از اسفند 99 مشغول گشت‌وگذار توی دنیای کلمات هستم؛ با این هدف که خوب بنویسم و این چشم‌انداز که کمک‌های موثری کنم. حالا سه‌ ساله که توی زمینه‌های گوناگون بازاریابی آنلاین مطالعه می‌کنم و یکی از حوزه‌های موردعلاقم، رفتارشناسی مخاطبان این فضا هست. دستاوردهای این مطالعه شده نوشتن محتوایی که امیدوارم شما بخونی، لُب‌کلام رو متوجه بشی، لذت ببری و با دست پر صفحه رو ترک کنی؛ شایدم بقیه نوشته‌هام رو بخونی :)

title sign
معرفی محصول
دوره Data Lakehouse مقدماتی
حسن احمدخانی

دوره آنلاین Data Lakehouse مقدماتی

طلایی
55,750,000 تومان39,025,000 تومان
نقره‌ای
15,750,000 تومان11,025,000 تومان
title sign
دیدگاه کاربران