خانه مهندسی داده مراحل ساده برای تحلیل داده با ChatGPT و پایتون مهندسی داده مسیر مهندسی داده نوشته شده توسط: نگین فاتحی تاریخ انتشار: ۱۸ شهریور ۱۴۰۳ آخرین بروزرسانی: 18 شهریور 1403 زمان مطالعه: 7 دقیقه ۰ (۰) تحلیل داده با هوش مصنوعی ChatGPT راهی ساده و کاربردی برای سادهسازی این فرآیند پیچیده است. دادهها در مهندسی داده (Data Engineering) بخش بزرگی از فرآیند علم داده یا “Data Science” را تشکیل میدهند. در CRISP-DM، این مرحله فرآیند «آمادهسازی داده» یا “Data Preparation” نامیده میشود. این زمینه شامل وظایفی مانند جذب، تبدیل و تضمین کیفیت داده است. در مقاله پیشرو، ما وظایف معمول مهندسی داده را با استفاده از ChatGPT و پایتون حل خواهیم کرد. هدف ما از این کار، پیوند دو رشته پرطرفدار این روزها است: مهندسی داده و مهندسی پرامپت. ۵ مرحله از مهندسی داده تا مهندسی پرامپت با ChatGPT در این بخش، پنج مرحله را با یکدیگر طی میکنیم تا با کمک مهندسی پرامپت (Prompt Engineering)، آمادهسازی دادهها را ممکن کنیم. ما در این مقاله، از نسخه ۳.۵ ChatGPT استفاده کردیم. ایجاد یک فریم داده بیایید در ابتدا، با یک مشکل ساده شروع کنیم. بنابراین 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) هنگام اجرای اسکریپت، میبینیم که خروجی با مشخصات ما مطابقت دارد: با وجود آنکه ما از نمونهای برای آزمایش خود استفاده کردیم، اما کد تولیدشده در بخشهای بعدی، در اصل میتواند مجموعه دادههای بزرگتری را مدیریت کند. تبدیل و خلاصه کردن فریم داده برای کار در زمینه علم داده، ساختار جدولی که با اولین پرامپت خود ایجاد کردیم، بهینه نیست. در عوض، یک “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) اجرای این اسکریپت نشان میدهد که Pivoting اینبار بهدرستی انجام شده است؛ چون به خروجی زیر رسیدیم: غنی سازی فریم داده یکی دیگر از وظایف معمول مهندسی داده، غنیسازی مجموعه داده (Enrich a Dataset) با اطلاعات اضافی است. برای این منظور، ما از ChatGPT خواستیم که کدهای کشور ISO را با ارسال پیام زیر به دادههای ما اضافه کند: For each country, in the table above, add its ISO code خروجی مدل رضایتبخش بود؛ چون پاسخ را تنظیم کرد و قطعه کد زیر را تحویل داد: 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 به فریم داده اضافه شده است: استخراج یک ستون اجازه دهید ستون جدید “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) با اجرای این کد روی پایتون، خروجی مدنظرمان را بهشکل زیر گرفتیم: تجزیه و تحلیل داده ها پس از تکمیل 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 برای تحلیل داده در سطوح اولیه راهکار مناسبی است؛ اما پیش از بهکارگیری کدها، باید خودتان دستبه تست شوید. استفاده از Pylint – تحلیلگر کدهای استاتیک پایتون – هنوز هم در عصر هوش مصنوعی ایده خوبی برای بهکارگیری کدهای تولیدشده AI است. شما درباره استفاده از هوش مصنوعی برای زمینههای پیچیده مانند علم داده چه فکری میکنید؟ تابهحال چند درصد از کارهای خودتان را با این مدلها پیش بردهاید؟ ما پذیرای دیدگاه تخصصی شما در این باره هستیم که میتوانید در بخش نظرات همین مقاله، آن را با ما و سایر مخاطبان بهاشتراک بگذارید. چه رتبه ای میدهید؟ میانگین ۰ / ۵. از مجموع ۰ اولین نفر باش معرفی نویسنده مقالات 35 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده نگین فاتحی از اسفند 99 مشغول گشتوگذار توی دنیای کلمات هستم؛ با این هدف که خوب بنویسم و این چشمانداز که کمکهای موثری کنم. حالا سه ساله که توی زمینههای گوناگون بازاریابی آنلاین مطالعه میکنم و یکی از حوزههای موردعلاقم، رفتارشناسی مخاطبان این فضا هست. دستاوردهای این مطالعه شده نوشتن محتوایی که امیدوارم شما بخونی، لُبکلام رو متوجه بشی، لذت ببری و با دست پر صفحه رو ترک کنی؛ شایدم بقیه نوشتههام رو بخونی :) معرفی محصول مجتبی بنائی دوره آموزش مهندسی داده [Data Engineering] 2.380.000 تومان مقالات مرتبط ۰۴ مهر مهندسی داده معماری Data Lakehouse چیست و چگونه کار میکند؟ نگین فاتحی ۲۴ شهریور مهندسی داده ردیس چیست و انواع آن کدامند؟ نگین فاتحی ۱۰ شهریور مهندسی داده NoSQL چیست؟ هر آن چیزی که درباره پایگاه داده NoSQL باید بدانید تیم فنی نیک آموز ۱۳ مرداد مهندسی داده نصب آپاچی کافکا مرحله به مرحله؛ از پیکربندی تا بهینهسازی تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ