یونٹ 9 / 11

کوڈ جنریشن: Python (پانڈا) اور SQL کے ساتھ AI کی مدد سے تجزیہ

فائدہ:

  • مضبوط ایس کیو ایل اور پانڈاس کوڈ لینے کی صلاحیت اور مصنوعی ذہانت کو واضح اسکیما اور مقصد دے کر لائن بہ لائن پڑھنے اور اس کی تصدیق کرنے کی صلاحیت
  • خاموش غلطیوں کو پکڑنے کی صلاحیت جیسے قطار کی گنتی، فٹنگ فنکشن اور انضمام/جوائن کے بعد تھرو پٹ
  • اسے خاموش کیے بغیر ڈیبگ میں مسئلے کو حل کرنے اور کوڈ کو پیداواری ماحول میں جانچے بغیر چلانے سے گریز کرنے کی صلاحیت

ڈیٹا سائنس کی دو بنیادی زبانیں ہیں: ایس کیو ایل (سٹرکچرڈ کوئری لینگویج — ڈیٹا بیس سے ڈیٹا کو استفسار کرنے کی زبان) اور ازگر (خاص طور پر، پانڈاس لائبریری — ٹیبلز کو پروگرامی طور پر ہیرا پھیری کرنے کا معیاری ٹول)۔ اس یونٹ میں، ہم AI کو کوڈ پارٹنر کے طور پر استعمال کرنا سیکھیں گے: صحیح سوالات کے ساتھ اس سے ٹھوس SQL اور پانڈا کوڈ حاصل کرنا، اس کوڈ کو پڑھنا اور اس کی تصدیق کرنا، اسے ڈیبگ کرنا، اور اسے آنکھیں بند کرکے کبھی نہیں چلائیں۔ AI منٹوں کے بجائے سیکنڈوں میں تکراری کوڈ لکھتا ہے۔ لیکن یہ آپ کا کام ہے کہ اس بات کو یقینی بنائیں کہ یہ جو کوڈ تیار کرتا ہے وہ صحیح منطق کے ساتھ صحیح کالم پر کارروائی کرتا ہے۔ ورکنگ کوڈ کا مطلب صحیح کوڈ نہیں ہے۔

AI کے ساتھ کوڈ تیار کرنا طاقتور لیکن خطرناک کیوں ہے۔

AI کوڈ جنریشن میں تین بڑے فائدے فراہم کرتا ہے: رفتار (سیکنڈوں میں 30 لائن گروپ بائی پیوٹ آپریشن لکھتی ہے)، یاد دہانی (آپ کو ایک پانڈاس فنکشن کی یاد دلاتا ہے جسے آپ بھول گئے تھے)، اور تدریس (کوڈ لائن کی لائن بذریعہ وضاحت کرتا ہے)۔ لیکن اس میں تین خطرات ہیں: سائلنٹ لاجک ایرر (کوڈ جو غلط کالم کو بغیر کسی غلطی کے چلتا ہے)، فٹڈ فنکشن (ایسا طریقہ تجویز کرتا ہے جو موجود نہیں ہے)، اور ییلڈ ٹریپ (کوڈ جو چھوٹے ڈیٹا پر کام کرتا ہے لیکن 10 ملین قطاروں پر کریش ہوتا ہے)۔ تو سنہری اصول: AI کے کوڈ کو اس طرح پڑھیں جیسے آپ نے اسے خود لکھا ہو۔ وہ لائن مت چلائیں جو آپ نہیں سمجھتے ہیں۔

ایس کیو ایل: ماخذ پر ڈیٹا پر کارروائی کریں۔

ایس کیو ایل آپ کو ڈیٹا بیس سے ڈیٹا بازیافت کرنے اور وہاں پر کارروائی کرنے کی اجازت دیتا ہے۔ آپ لاکھوں لائنوں کو ازگر میں کھینچے بغیر ان کا خلاصہ کر سکتے ہیں۔ بنیادی بلڈنگ بلاکس: SELECT (کون سا کالم)، WHERE (کون سی قطاریں)، GROUP BY (گروپ اور خلاصہ)، JOIN (ٹیبلز میں شامل ہوں)، HAVING (پوسٹ گروپ فلٹر)۔ AI پیچیدہ JOINs اور ونڈو فنکشنز کو لکھنے میں بہت مددگار ہے، لیکن دو چیزوں کی جانچ کرنا یقینی بنائیں: کیا صحیح کلید کے ذریعے شامل ہونا (غلط کلید ڈپلیکیٹ قطاروں) کے ذریعے ہے اور کیا فلٹر منطق درست ہے (خاص طور پر NULL برتاؤ اور تاریخ کی حدود)۔

احتیاط: پروڈکشن ڈیٹا بیس کے خلاف براہ راست AI سے تیار کردہ SQL استفسار نہ چلائیں۔ پہلے ایک چھوٹی کاپی یا LIMIT کے ساتھ ٹیسٹ کریں۔ WHERE شرط کی توثیق کیے بغیر اپ ڈیٹ/ڈیلیٹ استفسار کبھی نہ چلائیں۔ ایک غلط جہاں پوری میز کو حذف کر سکتا ہے۔

ازگر/پانڈا: لچکدار تجزیہ

پانڈاس پائتھون میں ٹیبلز (ڈیٹا فریم) کو جوڑنے کا معیاری طریقہ ہے۔ AI کا سب سے موثر استعمال اسے ایک واضح اسکیم اور مقصد دینا ہے۔ عام طور پر استعمال ہونے والے آپریشنز: فلٹر، گروپ بائی، مرج، پیوٹ_ٹیبل، اپلائی کریں۔ AI یہ جلدی لکھتا ہے۔ آپ جس چیز کی جانچ کرنا چاہتے ہیں وہ ہے منطق: کیا صحیح کالم میں گروپ بندی ہے، کیا انضمام نے قطاروں کی تعداد کو غیر متوقع طور پر تبدیل کر دیا ہے (ہمیشہ انضمام کے بعد قطاروں کی تعداد کو چیک کریں)، کیا سلسلہ آپریشنز اصل کو تبدیل کر رہے ہیں۔

لین دین

ایس کیو ایل

پانڈے

چوکی

فلٹرنگ

کہاں

df[df.x > 5]

NULL/NaN سلوک

گروپ بندی

گروپ بذریعہ

df.groupby()

کیا یہ صحیح کالم ہے؟

ضم

جوائن کریں۔

df.merge()

قطار کی گنتی میں تبدیلی

خلاصہ

AVG()، SUM()

.mean(), .sum()

کون سا کالم جمع کیا گیا۔

ترتیب دیں

آرڈر کے ذریعے

.sort_values()

سمت (صعودی/نزول)

نقل

الگ

.drop_duplicates()

کن کالموں میں؟

ڈیبگنگ: AI کے ساتھ

کوڈ ناکام ہونے پر، AI ایک بہترین ڈیبگنگ پارٹنر ہے۔ اسے مکمل غلطی کا پیغام اور متعلقہ کوڈ کا ٹکڑا دیں۔ لیکن دو پھندوں سے بچو۔ سب سے پہلے، AI ایک ایسا حل تجویز کر سکتا ہے جو غلطی کو "خاموش" کر دے (مثال کے طور پر، انتباہات کو چھپانا) - یہ غلطی کو ٹھیک نہیں کرتا، اسے چھپا دیتا ہے۔ دوسرا، AI بعض اوقات کسی مسئلے کو "حل" کرتے ہوئے خاموشی سے دوسرے رویے کو تبدیل کرتا ہے۔ اصول: فکس کو سمجھیں، حل کریں خاموش نہ کریں، اور تصدیق کریں کہ درست کرنے کے بعد بھی آؤٹ پٹ درست ہے۔

قابل تشریح اور قابل برقرار کوڈ چاہتے ہیں۔

AI سے کوڈ خریدتے وقت، کوڈ کے لیے پوچھیں جو پڑھنے کے قابل اور برقرار رکھنے کے قابل ہو، نہ کہ صرف "کام کرنے والا" کوڈ۔ جب آپ یا کوئی ساتھی مہینوں بعد اس کوڈ کو کھولتا ہے، تو اسے یہ سمجھنے کے قابل ہونا چاہیے کہ یہ کیا کرتا ہے۔ ایسا کرنے کے لیے، AI میں تین چیزیں شامل کرنے کی عادت بنائیں: بامعنی متغیر نام (orders_temiz، df2 نہیں)، اہم مراحل پر مختصر تبصرے کی لکیریں (یہ وضاحت کرنا کہ کیوں، کیا نہیں کیا جا رہا ہے)، اور میجک نمبر کے بجائے ایک نامزد مستقل (ACCEPT_ESIGI = 0.85 eduri b the code کی بجائے)۔ لمبی سنگل لائن زنجیروں سے بھی بچیں (ایک لائن میں پانچ اعمال کو جوڑنا)؛ یہ ڈیبگنگ کو مشکل بناتے ہیں۔ پہلے سے طے شدہ طور پر، AI اکثر جامع اور "سمارٹ" کوڈ تیار کرتا ہے۔ اگر آپ واضح طور پر کہتے ہیں کہ "پڑھنے کے قابل، قابل تشریح، برقرار رکھنے کے قابل لکھیں"، تو آپ کو بہت زیادہ برقرار رکھنے کے قابل آؤٹ پٹ ملے گا۔ یہ تولیدی صلاحیت (یونٹ 10) کی بنیاد بھی ہے: کوڈ جو سمجھ میں نہیں آتا وہ کوڈ ہے جسے دوبارہ محفوظ طریقے سے نہیں چلایا جا سکتا۔

تین چھوٹے مقدمات

کیس 1 - نقل میں شامل ہوں۔ ایک تجزیہ کار نے آرڈرز کو پروڈکٹ ٹیبل کے ساتھ ملایا اور دیکھا کہ کل ٹرن اوور 3 گنا زیادہ ہے۔ وجہ: پروڈکٹ ٹیبل میں ہر پروڈکٹ کی متعدد قطاریں (مختلف رنگ) تھیں۔ ہر آرڈر کو ڈپلیکیٹ میں شامل کریں۔ اے آئی کا کوڈ "کام کر رہا تھا" لیکن لائنوں کی تعداد 240 ہزار سے بڑھ کر 690 ہزار تک پہنچ گئی تھی۔ سبق: ہمیشہ انضمام/شامل ہونے کے بعد لائنوں کی تعداد چیک کریں۔

کیس 2 - فٹنگ فنکشن۔ اس نے ایک انٹرن کو AI df.groupby('x').summarize() تجویز کیا۔ پانڈوں میں ایسا کوئی طریقہ نہیں ہے (وہاں ہے .agg())۔ کوڈ نے کام نہیں کیا، انٹرن 20 منٹ کے لیے کھو گیا تھا۔ سبق: ایک فنکشن کی تصدیق کریں جسے آپ دستاویز سے نہیں پہچانتے ہیں۔ AI طریقوں کو بنا سکتا ہے۔

کیس 3 - پیداوار کا خاتمہ۔ ایک کوڈ ہر قطار کے لیے اپلائی کرنے میں ڈیٹا بیس سے استفسار کر رہا تھا۔ یہ 5,000 لائنوں پر چلا، 4 ملین لائنوں پر 9 گھنٹے لگے، اور رک گئے۔ جب AI نے ویکٹرائزڈ (بیچ) حل تجویز کیا تو وقت کم کر کے 40 سیکنڈ کر دیا گیا۔ سبق: چھوٹے ڈیٹا پر کام کرنے والا کوڈ بڑے ڈیٹا پر کریش ہو سکتا ہے۔ کارکردگی پر غور کریں۔

چار کاپی کرنے کے قابل ٹیمپلیٹس

1) اسکیما کے ساتھ SQL کی درخواست کرنا:

آپ کا کردار: SQL اسسٹنٹ (PostgreSQL)۔ ٹیبلز:- آرڈرز (id، customer_id، تاریخ ٹائم اسٹیمپ، رقم عددی) - گاہک (id، شہر کا متن) ٹاسک: 2024 میں کل ٹرن اوور اور فی شہر آرڈرز کی تعداد حاصل کریں، نزولی ترتیب میں ٹرن اوور کے حساب سے ترتیب دیں۔ وضاحت کریں کہ آپ NULL شہروں کو کیسے ہینڈل کرتے ہیں۔ میں پہلے LIMIT کے ساتھ استفسار کی جانچ کروں گا۔ اپ ڈیٹ/ڈیلیٹ نسل۔

2) چیک پوائنٹ کے ساتھ پانڈوں کا عمل:

میرے پاس DataFrames df (آرڈرز) اور df_customers (گاہک) ہیں۔ فی شہر اوسط رقم کا حساب لگائیں۔ اہم: انضمام سے پہلے اور بعد میں قطاروں کی تعداد پرنٹ کریں تاکہ میں دیکھ سکوں کہ آیا نقل ہے یا نہیں۔ وضاحت کریں کہ آپ نے کس کالم میں ضم کیا اور آپ نے اندرونی/بائیں کا انتخاب کیوں کیا۔

3) کوڈ کی وضاحت اور تصدیق:

مندرجہ ذیل پانڈا کوڈ لائن کی وضاحت کریں: ہر لائن کیا کرتی ہے، یہ کیا مفروضے بناتی ہے، کن صورتوں میں یہ غلط نتائج دے سکتی ہے؟ مجھے بتائیں کہ کیا میں نے فج فنکشن استعمال کیا ہے۔ کوڈ: [پیسٹ کریں]

4) ڈیبگنگ:

یہ کوڈ یہ ایرر دیتا ہے۔ مکمل غلطی کا پیغام: [پیسٹ کریں]۔ کوڈ: [پیسٹ کریں]۔ خرابی کی جڑ کی وضاحت کریں اور اسے ٹھیک کریں۔ اصل میں مسئلہ کو حل کرکے اسے ٹھیک کریں، الرٹ کو خاموش کرکے نہیں۔ یہ بھی بتائیں کہ آیا فکس نے آؤٹ پٹ کو تبدیل کیا ہے۔

کمزور فوری / مضبوط اشارہ

کمزور اشارہ:

ایک استفسار لکھیں جو مجھے فی شہر فروخت دیتا ہے۔

ٹیبل کے نام، کالم، ڈیٹا بیس کی قسم، NULL رویہ واضح نہیں ہے۔ AI عام ہے، یہ شاید ایک سوال پیدا کرے گا جو آپ کے ٹیبل کے مطابق نہیں ہے۔

طاقتور اشارہ:

آپ کا کردار: SQL اسسٹنٹ (MySQL 8)۔ ٹیبل: سیلز (آئی ڈی، سٹی وارچر، رقم ڈیسیمل، تاریخ کی تاریخ)۔ ٹاسک: سال 2024 کے لیے کل اور اوسط رقم، فی شہر کے آرڈرز کی تعداد حاصل کریں۔ کل رقم سے گھٹتے ہوئے ترتیب دیں؛ صرف 100 سے زیادہ آرڈر والے شہر دکھائیں (HAVING)۔شہر کو خارج کر دیں۔ سوال کی وضاحت کریں؛ میں LIMIT کے ساتھ ٹیسٹ کروں گا۔

یہاں ڈیٹا بیس، اسکیما، فلٹر، چھانٹنا اور NULL اصول واضح ہیں۔

عام غلطیاں

  • کوڈ کو پڑھے بغیر چلانا۔ ورکنگ کوڈ درست کوڈ نہیں ہے۔ کوڈ جو غلط کالم کو جوڑتا ہے وہ بھی غلطیوں کے بغیر چلتا ہے۔
  • انضمام/شامل ہونے کے بعد قطاروں کی تعداد کی جانچ نہیں کرنا۔ غلط کلید خاموشی سے قطاروں کو ڈپلیکیٹ کرتی ہے اور ٹوٹل کو بڑھا دیتی ہے۔
  • فٹنگ فنکشن کی تصدیق نہیں کرنا۔ AI ایسے طریقے تجویز کر سکتا ہے جو موجود نہیں ہیں۔ دستاویز سے تصدیق کریں کہ آپ اسے نہیں پہچانتے۔
  • کارکردگی کے بارے میں نہیں سوچنا۔ لاکھوں قطاروں پر چھوٹے ڈیٹا کریشز پر کام کرنا/لوپ کرنا؛ vectorize.
  • براہ راست پروڈکشن ڈیٹا بیس پر چلائیں۔ خاص طور پر جہاں یا جانچ کے بغیر UPDATE/DELETE چلانا تباہ کن ہے۔
مشورہ: AI سے موصول ہونے والے کوڈ کے ہر ٹکڑے میں "توثیق لائن" شامل کرنے کی عادت ڈالیں: لائنوں کی ایک پری اور پوسٹ پروسیسنگ نمبر، چند نمونہ لائنیں، اور ہاتھ سے ایک اہم کل۔ یہ تینوں چیک سب سے زیادہ خاموش منطق کی غلطیاں پکڑتے ہیں۔

خلاصہ میں

AI ایک طاقتور پارٹنر ہے جو جلدی سے SQL اور پانڈا کوڈ تیار کرتا ہے، لیکن یہ کوئی اندھی اتھارٹی نہیں ہے۔ اسے اسکیم اور مقصد واضح طور پر بتائیں۔ اس کے تیار کردہ کوڈ کو اس طرح پڑھیں جیسے آپ نے اسے خود لکھا ہے۔ ضم/شامل ہونے کے بعد قطاروں کی تعداد، فٹنگ فنکشنز اور تھرو پٹ چیک کریں۔ اسے پروڈکشن ڈیٹا بیس پر جانچے بغیر نہ چلائیں۔ ڈیبگ کرتے وقت، مسئلہ کو حل کرنے کا مقصد بنائیں، اسے خاموش نہیں کرنا۔ جو کوڈ کام کرتا ہے وہ صحیح کوڈ نہیں ہے۔ صرف آپ ہی درستگی کی ضمانت دے سکتے ہیں۔

درخواست کا کام

ایک تجزیہ سوال منتخب کریں (مثلاً "ماہانہ ٹرن اوور فی چینل") اور SQL اور پانڈوں دونوں کے ساتھ AI سے کوڈ کی درخواست کریں۔ دونوں کوڈ لائن بذریعہ لائن پڑھیں، انضمام/شامل ہونے کے بعد لائنوں کی تعداد چیک کریں اور دستی طور پر کم از کم ایک اہم رقم کی تصدیق کریں۔ موازنہ کریں کہ آیا دونوں کوڈ ایک ہی نتیجہ پیش کرتے ہیں۔ اگر مختلف ہے تو اس کی وجہ معلوم کریں۔

چیک لسٹ

  • کیا میں نے ٹیبل/اسکیما اور مقصد واضح طور پر AI کو دیا ہے؟
  • [ ] کیا میں نے اس کوڈ کو پڑھا اور سمجھا جو اس نے لائن بہ لائن تیار کیا تھا؟
  • کیا میں نے انضمام/جوائن کے بعد لائنوں کی تعداد چیک کی؟
  • کیا میں نے ان فنکشنز کی تصدیق کی ہے جنہیں میں دستاویزات سے نہیں پہچانتا؟
  • کیا میں نے پہلے محفوظ/چھوٹے ڈیٹا پر کوڈ کا تجربہ کیا ہے اور پیداواری ماحول میں نہیں؟