واحد 9 / 11

تولید کد: تجزیه و تحلیل به کمک هوش مصنوعی با پایتون (پانداها) و SQL

سود:

  • امکان گرفتن کدهای SQL و پانداهای قوی و خواندن و تأیید خط به خط آن با دادن طرح و هدف واضح به هوش مصنوعی
  • امکان گرفتن خطاهای بی صدا مانند تعداد ردیف، عملکرد مناسب و توان عملیاتی پس از ادغام/پیوستن
  • امکان حل مشکل در دیباگ بدون سایلنت کردن و اجتناب از اجرای کد بدون تست آن در محیط تولید

علم داده دو زبان اصلی دارد: SQL (زبان پرس و جوی ساختاریافته - زبان جستجوی داده ها از پایگاه داده) و پایتون (به طور خاص، کتابخانه پانداها - ابزار استاندارد برای دستکاری جداول به صورت برنامه نویسی). در این بخش، ما یاد خواهیم گرفت که از هوش مصنوعی به عنوان شریک کد استفاده کنیم: دریافت کد SQL و پانداهای جامد از آن با سؤالات درست، خواندن و اعتبارسنجی آن کد، اشکال زدایی آن، و هرگز اجرای کورکورانه آن. هوش مصنوعی به جای چند دقیقه، کدهای تکراری را در چند ثانیه می نویسد. اما وظیفه شما این است که مطمئن شوید کدی که تولید می کند ستون صحیح را با منطق صحیح پردازش می کند. کد کار به معنای کد صحیح نیست.

چرا تولید کد با هوش مصنوعی قدرتمند اما خطرناک است

هوش مصنوعی سه مزیت بزرگ در تولید کد ارائه می‌کند: سرعت (عملیات 30 خطی groupby-pivot را در چند ثانیه می‌نویسد)، یادآوری (به شما یک عملکرد پاندا را که فراموش کرده‌اید یادآوری می‌کند)، و آموزش (خط به خط کد را توضیح می‌دهد). اما سه خطر را به همراه دارد: خطای منطقی خاموش (کدی که ستون اشتباه را جمع می‌کند بدون خطا اجرا می‌شود)، تابع برازش (روشی را پیشنهاد می‌کند که وجود ندارد) و تله بازده (کدی که روی داده‌های کوچک کار می‌کند اما در 10 میلیون ردیف خراب می‌شود). بنابراین قانون طلایی: کد هوش مصنوعی را طوری بخوانید که انگار خودتان آن را نوشته اید. خطی را که نمی فهمی اجرا نکن.

SQL: پردازش داده ها در منبع

SQL به شما امکان می دهد داده ها را از پایگاه داده بازیابی کنید و در آنجا پردازش کنید. شما می توانید میلیون ها خط را بدون کشیدن آنها به پایتون خلاصه کنید. بلوک‌های اصلی ساختمان: SELECT (کدام ستون)، WHERE (کدام ردیف)، GROUP BY (گروه‌بندی و خلاصه کردن)، JOIN (پیوستن به جداول)، HAVING (فیلتر پس از گروه). هوش مصنوعی در نوشتن JOIN های پیچیده و توابع پنجره بسیار مفید است، اما حتما دو چیز را بررسی کنید: آیا JOIN از طریق کلید صحیح است (کلید اشتباه ردیف ها را تکرار می کند) و آیا منطق فیلتر درست است (به خصوص رفتار NULL و محدوده تاریخ).

احتیاط: پرس و جوی SQL تولید شده با هوش مصنوعی را مستقیماً در مقابل پایگاه داده تولید اجرا نکنید. ابتدا با یک کپی کوچک یا LIMIT تست کنید. هرگز درخواست UPDATE/DELETE را بدون تأیید شرط WHERE اجرا نکنید. یک WHERE اشتباه می تواند کل جدول را حذف کند.

پایتون/پاندا: تجزیه و تحلیل انعطاف پذیر

pandas روش استاندارد برای دستکاری جداول (DataFrame) در پایتون است. کارآمدترین استفاده از هوش مصنوعی ارائه یک طرح و هدف واضح به آن است. متداول ترین عملیات های مورد استفاده: فیلتر، groupby، ادغام، pivot_table، اعمال. هوش مصنوعی اینها را به سرعت می نویسد. چیزی که می‌خواهید بررسی کنید منطق است: آیا گروه‌بندی در ستون صحیح، آیا ادغام تعداد ردیف‌ها را به‌طور غیرمنتظره‌ای تغییر داده است (همیشه تعداد ردیف‌ها را بعد از ادغام بررسی کنید)، آیا عملیات زنجیره‌ای، نسخه اصلی را تغییر می‌دهند.

معامله

SQL

پانداها

ایست بازرسی

فیلتر کردن

کجا

df[df.x > 5]

رفتار NULL/NaN

گروه بندی

گروه توسط

df.groupby()

آیا ستون سمت راست است؟

ادغام

بپیوندید

df.merge()

تغییر تعداد ردیف

خلاصه

AVG()، SUM()

.mean()، .sum()

کدام ستون جمع آوری شد

مرتب سازی بر اساس

سفارش توسط

.sort_values()

جهت (صعودی/نزولی)

کپی برداری

متمایز

.drop_duplicates()

در کدام ستون ها؟

اشکال زدایی: با هوش مصنوعی

وقتی کد خراب می شود، هوش مصنوعی یک شریک اشکال زدایی عالی است. پیام خطای کامل و قطعه کد مربوطه را به آن بدهید. اما مراقب دو تله باشید. ابتدا، هوش مصنوعی ممکن است راه حلی را پیشنهاد کند که خطا را خاموش کند (به عنوان مثال، پنهان کردن هشدارها) - این خطا را برطرف نمی کند، بلکه آن را پنهان می کند. دوم، هوش مصنوعی گاهی اوقات در حین «حل» یک مشکل، رفتار دیگری را تغییر می‌دهد. قانون: رفع مشکل را درک کنید، عدم قطعیت را حل کنید، و بررسی کنید که خروجی پس از رفع مشکل همچنان صحیح است.

کد قابل تفسیر و نگهداری می خواهید

هنگام خرید کد از هوش مصنوعی، کدی را بخواهید که قابل خواندن و نگهداری باشد، نه فقط کدی که "کار می کند". زمانی که شما یا یکی از همکاران ماه‌ها بعد آن کد را باز می‌کنید، باید بتواند بفهمد چه کاری انجام می‌دهد. برای انجام این کار، عادت کنید که هوش مصنوعی شامل سه چیز باشد: نام متغیرهای معنی دار (orders_temiz، نه df2)، خطوط نظر کوتاه در مراحل مهم (توضیح اینکه چرا، نه اینکه چه کاری انجام می شود)، و یک ثابت نامگذاری شده به جای یک عدد جادویی (ACCEPT_ESIGI = 0.85 به جای 0.85 مدفون در کد). همچنین از زنجیرهای بلند تک خطی (که پنج عمل را در یک خط به هم متصل می کنند) خودداری کنید. اینها اشکال زدایی را دشوار می کند. به طور پیش فرض، AI اغلب کد مختصر و "هوشمند" تولید می کند. اگر به وضوح بگویید "نوشتن قابل خواندن، قابل تفسیر، قابل نگهداری"، خروجی بسیار قابل نگهداری تری خواهید داشت. این نیز اساس تکرارپذیری است (واحد 10): کدی که درک نمی شود، کدی است که نمی تواند به طور ایمن دوباره اجرا شود.

سه کیف کوچک

مورد 1 - تکرار JOIN. یک تحلیلگر سفارشات را با جدول محصول ترکیب کرد و دریافت که کل گردش مالی 3 برابر بیشتر است. علت: هر محصول دارای چندین ردیف (رنگ های مختلف) در جدول محصول بود. JOIN هر سفارش را کپی کرد. کد هوش مصنوعی "کار می کرد" اما تعداد خطوط از 240 هزار به 690 هزار افزایش یافته بود. درس: همیشه تعداد خطوط را پس از ادغام/JOIN بررسی کنید.

مورد 2 - عملکرد اتصال. او AI df.groupby('x').summarize() را به یک کارآموز پیشنهاد کرد. چنین روشی در پانداها وجود ندارد (.agg() وجود دارد). کد کار نکرد، کارآموز 20 دقیقه گم شد. درس: بررسی عملکردی که از سند نمی شناسید. هوش مصنوعی می تواند روش ها را بسازد.

مورد 3 - سقوط محصول. یک کد از پایگاه داده در درخواست برای هر ردیف پرس و جو می کرد. در 5000 خط اجرا شد، 9 ساعت در 4 میلیون خط طول کشید و متوقف شد. هنگامی که هوش مصنوعی یک راه حل برداری (بچکی) را پیشنهاد کرد، زمان به 40 ثانیه کاهش یافت. درس: کدی که روی داده‌های کوچک کار می‌کند ممکن است روی داده‌های بزرگ خراب شود. کارایی را در نظر بگیرید.

چهار قالب قابل کپی

1) درخواست SQL با طرحواره:

نقش شما: دستیار SQL (PostgreSQL). جداول: - سفارش‌ها (شناسه، شناسه_مشتری، مهر زمانی تاریخ، عدد عددی) - مشتریان (شناسه، متن شهر) وظیفه: کل گردش مالی و تعداد سفارش‌های هر شهر در سال 2024 را به‌دست آورید که بر اساس گردش مالی به ترتیب نزولی مرتب شده‌اند. نحوه برخورد با شهرهای NULL را توضیح دهید. ابتدا پرس و جو را با LIMIT تست می کنم. به روز رسانی/حذف نسل.

2) فرآیند پانداها با ایست بازرسی:

من DataFrames df (سفارش) و df_customers (مشتریان) دارم. محاسبه مقدار متوسط ​​در هر شهر مهم: تعداد سطرها را قبل و بعد از ادغام چاپ کنید تا ببینم آیا تکراری وجود دارد یا خیر. توضیح دهید که در کدام ستون ادغام شده اید و چرا inner/left را انتخاب کرده اید.

3) توضیح و تأیید کد:

کد پانداهای زیر را خط به خط توضیح دهید: هر خط چه کاری انجام می دهد، چه فرضیاتی دارد، در چه مواردی می تواند نتایج اشتباهی به همراه داشته باشد؟ اگر از تابع فاج استفاده کردم به من اطلاع دهید. کد: [چسباندن]

4) اشکال زدایی:

این کد این خطا را می دهد. پیام خطای کامل: [paste]. کد: [چسباندن]. علت ROOT خطا را توضیح دهید و آن را برطرف کنید. آن را با حل واقعی مشکل حل کنید، نه با خاموش کردن هشدار. همچنین مشخص کنید که آیا اصلاح خروجی را تغییر داده است یا خیر.

اعلان ضعیف / اعلان قوی

اعلان ضعیف:

درخواستی بنویسید که فروش هر شهر را به من بدهد.

نام جدول، ستون ها، نوع پایگاه داده، رفتار NULL نامشخص است. هوش مصنوعی رایج است، احتمالاً درخواستی را ایجاد می کند که با جدول شما مطابقت ندارد.

اعلان قدرتمند:

نقش شما: دستیار SQL (MySQL 8). جدول: فروش (شناسه، شهر varchar، مقدار اعشار، تاریخ تاریخ). وظیفه: دریافت کل و میانگین مبلغ، تعداد سفارشات در هر شهر برای سال 2024. مرتب سازی کاهش بر اساس مقدار کل. فقط شهرهایی را با بیش از 100 سفارش نشان دهید (HAVING). پرس و جو را توضیح دهید؛ من با LIMIT تست خواهم کرد.

در اینجا پایگاه داده، طرحواره، فیلتر، مرتب سازی و قانون NULL واضح است.

اشتباهات رایج

  • اجرای کد بدون خواندن آن کد کار کد صحیحی نیست. کدی که ستون اشتباه را دستکاری می کند نیز بدون خطا اجرا می شود.
  • عدم بررسی تعداد ردیف‌ها پس از ادغام/پیوستن. کلید اشتباه بی‌صدا ردیف‌ها را کپی می‌کند و مجموع را افزایش می‌دهد.
  • عدم تأیید عملکرد برازش هوش مصنوعی ممکن است روش هایی را پیشنهاد کند که وجود ندارند. از روی سند تأیید کنید که آن را نمی شناسید.
  • به کارایی فکر نمی کنم. اعمال/حلقه کار بر روی خرابی داده های کوچک در میلیون ها ردیف. برداری
  • به طور مستقیم در پایگاه داده تولید اجرا شود. به خصوص اجرای UPDATE/DELETE بدون WHERE یا آزمایش فاجعه بار است.
نکته: عادت کنید به هر کدی که از هوش مصنوعی دریافت می‌کنید، یک «خط اعتبارسنجی» اضافه کنید: تعداد خطوط قبل و بعد از پردازش، چند خط نمونه، و یک مجموع بحرانی با دست. این سه بررسی بیشتر خطاهای منطقی بی صدا را می گیرند.

به طور خلاصه

هوش مصنوعی شریک قدرتمندی است که به سرعت کدهای SQL و پانداها را تولید می کند، اما یک مرجع کور نیست. طرح و هدف را به وضوح به او بدهید. کدی را که تولید می‌کند بخوانید، انگار خودتان آن را نوشته‌اید. پس از ادغام/پیوستن، تعداد ردیف‌ها، عملکردهای اتصال و توان عملیاتی را بررسی کنید. آن را بدون آزمایش در پایگاه داده تولید اجرا نکنید. هنگام اشکال زدایی، هدف خود را حل مشکل کنید، نه ساکت کردن آن. کدی که کار می کند، کد صحیحی نیست. فقط شما می توانید دقت را تضمین کنید.

وظیفه کاربردی

یک سوال تجزیه و تحلیل (مثلاً "گردش ماهانه در هر کانال") را انتخاب کنید و کد را از هوش مصنوعی با SQL و پاندا درخواست کنید. هر دو کد را خط به خط بخوانید، تعداد خطوط را پس از ادغام/JOIN بررسی کنید و حداقل یک جمع بحرانی را به صورت دستی تأیید کنید. مقایسه کنید که آیا این دو کد نتیجه یکسانی دارند یا خیر. اگر متفاوت است، دلیل آن را پیدا کنید.

چک لیست

  • [ ] آیا جدول/شما و هدف را به وضوح به هوش مصنوعی داده ام؟
  • [ ] آیا من خط به خط کد تولید شده توسط آن را خواندم و فهمیدم؟
  • [ ] آیا من تعداد خطوط را پس از ادغام/پیوستن بررسی کردم؟
  • [ ] آیا عملکردهایی را که از مستندات نمی شناسم تأیید کرده ام؟
  • [ ] آیا ابتدا کد را روی داده های ایمن/کوچک تست کرده ام و نه در محیط تولید؟