نیک آموز > وبلاگ > مهندسی داده > ۵ مرحله ساده برای تحلیل داده با ChatGPT و پایتون ۵ مرحله ساده برای تحلیل داده با ChatGPT و پایتون مهندسی داده مسیر مهندسی داده نوشته شده توسط: نگین فاتحی تاریخ انتشار: ۱۸ شهریور ۱۴۰۳ آخرین بروزرسانی: 23 اسفند 1404 زمان مطالعه: 7 دقیقه ۵ (۱) در تحلیل داده با ChatGPT و پایتون، همچنین تحلیل داده با هوش مصنوعی 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) هنگام اجرای اسکریپت، میبینیم که خروجی با مشخصات ما مطابقت دارد: با وجود آنکه ما از نمونهای برای آزمایش خود استفاده کردیم، اما کد تولیدشده در بخشهای بعدی، در اصل میتواند مجموعه دادههای بزرگتری را مدیریت کند. 💡 با آموزش دوره Data Lakehouse مقدماتی، تبدیل شوید به فردی که شرکتها برایش رقابت میکنند. تبدیل و خلاصه کردن فریم داده برای کار در زمینه علم داده، ساختار جدولی که با اولین پرامپت خود ایجاد کردیم، بهینه نیست. در عوض، یک “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 اینبار بهدرستی انجام شده است؛ چون به خروجی زیر رسیدیم: غنی سازی فریم داده یکی دیگر از وظایف معمول مهندسی داده، غنیسازی مجموعه داده (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 به فریم داده اضافه شده است: استخراج یک ستون اجازه دهید ستون جدید “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) با اجرای این کد روی پایتون، خروجی مدنظرمان را بهشکل زیر گرفتیم: تجزیه و تحلیل داده با 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 میتواند به شناسایی خطاها و بهبود کیفیت کد کمک کند. 😐 در ادامه میتوانید مقالات مرتبط و کاربردی دیگری را نیز مطالعه کنید: تفاوت فایروالهای Stateful و Stateless dbt در ETL و ELT چیست و چه مزایایی دارد؟ مسیر شغلی دواپس (DevOps) | چگونه مهندس دواپس شویم؟ چه رتبه ای میدهید؟ میانگین ۵ / ۵. از مجموع ۱ اولین نفر باش معرفی نویسنده مقالات 35 مقاله توسط این نویسنده نگین فاتحی از اسفند 99 مشغول گشتوگذار توی دنیای کلمات هستم؛ با این هدف که خوب بنویسم و این چشمانداز که کمکهای موثری کنم. حالا سه ساله که توی زمینههای گوناگون بازاریابی آنلاین مطالعه میکنم و یکی از حوزههای موردعلاقم، رفتارشناسی مخاطبان این فضا هست. دستاوردهای این مطالعه شده نوشتن محتوایی که امیدوارم شما بخونی، لُبکلام رو متوجه بشی، لذت ببری و با دست پر صفحه رو ترک کنی؛ شایدم بقیه نوشتههام رو بخونی :) معرفی محصول حسن احمدخانی دوره آنلاین Data Lakehouse مقدماتی طلایی55,750,000 تومان39,025,000 توماننقرهای15,750,000 تومان11,025,000 تومان مقالات مرتبط ۰۱ اسفند مهندسی داده تکامل معماریهای داده از Data Warehouse تا Data Lake و Data Lakehouse فرید طاهری ۰۴ مهر مهندسی داده معماری Data Lakehouse چیست و چگونه کار میکند؟ نگین فاتحی ۲۴ شهریور مهندسی داده ردیس چیست؟ راهنمای کامل Redis و معرفی ۱۰ نوع Data Type در آن نگین فاتحی ۱۰ شهریور مهندسی داده NoSQL چیست؟ معرفی ۴ نوع پایگاه داده NoSQL تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ