وحدة 9 / 11

إنشاء التعليمات البرمجية: التحليل بمساعدة الذكاء الاصطناعي باستخدام Python (Pandas) وSQL

المكاسب:

  • القدرة على أخذ تعليمات برمجية SQL وpandas قوية وقراءتها والتحقق منها سطرًا تلو الآخر من خلال إعطاء مخطط واضح وهدف للذكاء الاصطناعي
  • القدرة على اكتشاف الأخطاء الصامتة مثل عدد الصفوف ووظيفة الملاءمة والإنتاجية بعد الدمج/الانضمام
  • القدرة على حل المشكلة في تصحيح الأخطاء دون إسكاتها وتجنب تشغيل الكود دون اختباره في بيئة الإنتاج

يتكون علم البيانات من لغتين أساسيتين: SQL (لغة الاستعلام الهيكلية - لغة الاستعلام عن البيانات من قواعد البيانات) وPython (على وجه التحديد، مكتبة الباندا - الأداة القياسية لمعالجة الجداول برمجيًا). في هذه الوحدة، سوف نتعلم استخدام الذكاء الاصطناعي كشريك في التعليمات البرمجية: الحصول على تعليمات برمجية SQL وpandas قوية منه مع الأسئلة الصحيحة، وقراءة هذا الرمز والتحقق من صحته، وتصحيح أخطائه، وعدم تشغيله بشكل أعمى أبدًا. يكتب الذكاء الاصطناعي تعليمات برمجية متكررة في ثوانٍ بدلاً من دقائق؛ لكن مهمتك هي التأكد من أن الكود الذي ينتجه يعالج العمود الصحيح بالمنطق الصحيح. رمز العمل لا يعني الرمز الصحيح.

لماذا يعد إنتاج التعليمات البرمجية باستخدام الذكاء الاصطناعي أمرًا قويًا ولكنه محفوف بالمخاطر؟

يوفر الذكاء الاصطناعي ثلاث فوائد كبيرة في إنشاء التعليمات البرمجية: السرعة (يكتب عملية تجميع محورية مكونة من 30 سطرًا في ثوانٍ)، والتذكير (يذكرك بوظيفة الباندا التي نسيتها)، والتعليم (يشرح سطرًا من التعليمات البرمجية سطرًا تلو الآخر). ولكنه ينطوي على ثلاثة مخاطر: الخطأ المنطقي الصامت (الرمز الذي يجمع العمود الخاطئ الذي يعمل دون أخطاء)، والوظيفة المجهزة (تقترح طريقة غير موجودة)، ومصيدة العائد (الكود الذي يعمل على بيانات صغيرة ولكنه يتعطل عند 10 ملايين صف). لذا فإن القاعدة الذهبية: اقرأ كود الذكاء الاصطناعي كما لو أنك كتبته بنفسك. لا تقم بتشغيل الخط الذي لا تفهمه.

SQL: معالجة البيانات في المصدر

يتيح لك SQL استرداد البيانات من قاعدة البيانات ومعالجتها هناك؛ يمكنك تلخيص ملايين الأسطر دون سحبها إلى بايثون. اللبنات الأساسية: SELECT (أي الأعمدة)، WHERE (أي الصفوف)، GROUP BY (التجميع والتلخيص)، JOIN (ربط الجداول)، HAVING (مرشح ما بعد المجموعة). يعد الذكاء الاصطناعي مفيدًا جدًا في كتابة عمليات JOIN المعقدة ووظائف النوافذ، ولكن تأكد من التحقق من شيئين: هل JOIN عبر المفتاح الصحيح (المفتاح الخاطئ يكرر الصفوف) وهل منطق التصفية صحيح (خاصة السلوك NULL ونطاقات التاريخ).

تنبيه: لا تقم بتشغيل استعلام SQL تم إنشاؤه بواسطة الذكاء الاصطناعي مباشرة على قاعدة بيانات الإنتاج. اختبر بنسخة صغيرة أو LIMIT أولاً. لا تقم مطلقًا بتشغيل استعلام UPDATE/DELETE دون التحقق من صحة شرط WHERE؛ خطأ WHERE يمكن أن يحذف الجدول بأكمله.

بايثون/الباندا: تحليل مرن

الباندا هي الطريقة القياسية للتعامل مع الجداول (DataFrame) في بايثون. إن الاستخدام الأكثر كفاءة للذكاء الاصطناعي هو إعطاؤه مخططًا وهدفًا واضحين. العمليات الأكثر استخدامًا: التصفية، والتجميع، والدمج، والجدول المحوري، والتطبيق. الذكاء الاصطناعي يكتب هذه الأشياء بسرعة؛ ما تريد التحقق منه هو المنطق: هل التجميع في العمود الصحيح، هل أدى الدمج إلى تغيير عدد الصفوف بشكل غير متوقع (تحقق دائمًا من عدد الصفوف بعد الدمج)، هل تؤدي عمليات السلسلة إلى تغيير الأصل.

معاملة

SQL

الباندا

نقطة تفتيش

التصفية

أين

مدافع[df.x > 5]

سلوك NULL/NaN

تجميع

المجموعة حسب

df.groupby()

هل هو العمود الصحيح؟

دمج

انضم

df.merge()

تغيير عدد الصفوف

ملخص

متوسط ()، مجموع ()

.يعني()، .sum()

أي عمود تم جمعه

الترتيب حسب

الطلب حسب

.sort_values()

الاتجاه (تصاعدي/تنازلي)

إلغاء البيانات المكررة

مميز

.drop_duplicates()

في أي أعمدة؟

التصحيح: مع الذكاء الاصطناعي

عندما تفشل التعليمات البرمجية، يعد الذكاء الاصطناعي شريكًا ممتازًا في تصحيح الأخطاء. أعطه رسالة الخطأ الكاملة ومقتطف الشفرة ذي الصلة. لكن احذر من فخين. أولاً، قد يقترح الذكاء الاصطناعي حلاً يعمل على "إسكات" الخطأ (على سبيل المثال، إخفاء التنبيهات) - وهذا لا يصلح الخطأ، بل يخفيه. ثانيًا، يقوم الذكاء الاصطناعي أحيانًا بتغيير سلوك آخر بصمت أثناء "حل" مشكلة ما. القاعدة: فهم الإصلاح، والحل وليس كتم الصوت، والتحقق من أن الإخراج لا يزال صحيحًا بعد الإصلاح.

تريد رمزًا قابلاً للتفسير ويمكن صيانته

عند شراء تعليمات برمجية من الذكاء الاصطناعي، اطلب تعليمات برمجية قابلة للقراءة والصيانة، وليس فقط تعليمات برمجية "تعمل". عندما تفتح أنت أو أحد زملائك هذا الرمز بعد أشهر، فمن المفترض أن يكون قادرًا على فهم ما يفعله. للقيام بذلك، اجعل الذكاء الاصطناعي يتضمن ثلاثة أشياء عادة: أسماء متغيرة ذات معنى (orders_temiz، وليس df2)، وأسطر تعليق قصيرة في الخطوات الحاسمة (تشرح السبب، وليس ما يتم القيام به)، وثابت مسمى بدلاً من الرقم السحري (ACCEPT_ESIGI = 0.85 بدلاً من 0.85 مدفون في الكود). تجنب أيضًا السلاسل الطويلة ذات السطر الواحد (ربط خمسة إجراءات في سطر واحد)؛ هذه تجعل التصحيح صعبًا. افتراضيًا، غالبًا ما ينتج الذكاء الاصطناعي تعليمات برمجية موجزة و"ذكية"؛ إذا قلت بوضوح "اكتب بشكل قابل للقراءة، وقابل للتفسير، وقابل للصيانة"، فستحصل على مخرجات أكثر قابلية للصيانة. وهذا أيضًا أساس قابلية التكرار (الوحدة 10): الكود غير المفهوم هو كود لا يمكن إعادة تشغيله بأمان.

ثلاث حالات صغيرة

الحالة 1 - الانضمام إلى النسخ المتماثل. قام أحد المحللين بدمج الطلبات مع جدول المنتجات ووجد أن إجمالي حجم التداول أعلى بثلاث مرات. السبب: كان لكل منتج صفوف متعددة (ألوان مختلفة) في جدول المنتج؛ JOIN مكررة لكل طلب. كان كود الذكاء الاصطناعي "يعمل"، لكن عدد الخطوط قفز من 240 ألفًا إلى 690 ألفًا. الدرس: تحقق دائمًا من عدد الأسطر بعد الدمج/الانضمام.

الحالة 2 - وظيفة التركيب. اقترح الذكاء الاصطناعي df.groupby('x').summarize() على أحد المتدربين؛ لا توجد مثل هذه الطريقة في الباندا (يوجد .agg()). الكود لم يعمل، المتدرب ضاع لمدة 20 دقيقة. الدرس: التحقق من وظيفة لا تعرفها من المستند؛ يمكن للذكاء الاصطناعي أن يشكل أساليب.

الحالة 3 - انهيار العائد. كان هناك رمز واحد يستعلم عن قاعدة البيانات في كل صف؛ تم تشغيله على 5000 خط، واستغرق 9 ساعات على 4 ملايين خط، وتوقف. عندما اقترح الذكاء الاصطناعي حلاً متجهًا (دفعة)، تم تقليل الوقت إلى 40 ثانية. الدرس المستفاد: التعليمات البرمجية التي تعمل على البيانات الصغيرة قد تتعطل عند استخدام البيانات الكبيرة؛ النظر في الكفاءة.

أربعة قوالب قابلة للنسخ

1) طلب SQL مع المخطط:

دورك: مساعد SQL (PostgreSQL). الجداول:- الطلبات (المعرف، معرف_العميل، الطابع الزمني للتاريخ، المبلغ الرقمي)- العملاء (المعرف، نص المدينة)المهمة: احصل على إجمالي حجم التداول وعدد الطلبات لكل مدينة في عام 2024، مرتبة حسب معدل الدوران بترتيب تنازلي. اشرح كيف تتعامل مع المدن الفارغة. سأختبر الاستعلام باستخدام LIMIT أولاً؛ تحديث/حذف الجيل.

2) عملية الباندا مع نقطة التفتيش:

لدي DataFrames df (الطلبات) وdf_customers (العملاء). حساب متوسط ​​المبلغ لكل مدينة. هام: قم بطباعة عدد الصفوف قبل الدمج وبعده حتى أتمكن من معرفة ما إذا كان هناك تكرار. اشرح في أي عمود قمت بدمجه وسبب اختيارك للعمود الداخلي/الأيسر.

3) شرح الكود والتحقق منه:

اشرح رمز الباندا التالي سطرًا تلو الآخر: ماذا يفعل كل سطر، وما هي الافتراضات التي يقوم بها، وفي أي الحالات يمكن أن يعطي نتائج خاطئة؟ اسمحوا لي أن أعرف إذا كنت قد استخدمت وظيفة الحلوى. الكود: [لصق]

4) التصحيح:

هذا الرمز يعطي هذا الخطأ. رسالة الخطأ الكاملة: [لصق]. الكود: [لصق]. اشرح السبب الجذري للخطأ وقم بإصلاحه. قم بإصلاحه عن طريق حل المشكلة فعليًا، وليس عن طريق إسكات التنبيه. قم أيضًا بالإشارة إلى ما إذا كان الإصلاح قد أدى إلى تغيير الإخراج.

موجه ضعيف / موجه قوي

حث ضعيف:

اكتب استعلامًا يعطيني المبيعات لكل مدينة.

أسماء الجداول والأعمدة ونوع قاعدة البيانات والسلوك NULL غير واضحة. الذكاء الاصطناعي شائع، ومن المحتمل أن ينتج استعلامًا لا يناسب جدولك.

مطالبة قوية:

دورك: مساعد SQL (MySQL 8). الجدول: المبيعات (المعرف، varchar المدينة، المبلغ العشري، تاريخ التاريخ). المهمة: الحصول على إجمالي ومتوسط ​​المبلغ وعدد الطلبات لكل مدينة لعام 2024؛ فرز تنازلي حسب المبلغ الإجمالي؛ عرض فقط المدن التي لديها أكثر من 100 طلب (HAVING).NULL باستثناء المدينة. اشرح الاستعلام؛ سأختبر مع LIMIT.

هنا تكون قاعدة البيانات والمخطط والتصفية والفرز وقاعدة NULL واضحة.

الأخطاء الشائعة

  • تشغيل الكود دون قراءته. رمز العمل ليس رمزًا صحيحًا؛ يتم أيضًا تشغيل التعليمات البرمجية التي تعالج العمود الخطأ بدون أخطاء.
  • عدم التحقق من عدد الصفوف بعد الدمج/الانضمام. يقوم المفتاح الخاطئ بتكرار الصفوف وتضخيم الإجماليات بصمت.
  • عدم التحقق من وظيفة التركيب. قد يقترح الذكاء الاصطناعي أساليب غير موجودة؛ أكد من المستند أنك لا تتعرف عليه.
  • عدم التفكير في الكفاءة. تطبيق/تكرار العمل على أعطال البيانات الصغيرة في ملايين الصفوف؛ com.vectorize.
  • تشغيل مباشرة على قاعدة بيانات الإنتاج. يعد تشغيل UPDATE/DELETE بدون WHERE أو الاختبار أمرًا كارثيًا بشكل خاص.
نصيحة: اعتد على إضافة "سطر التحقق" إلى كل جزء من التعليمات البرمجية التي تتلقاها من الذكاء الاصطناعي: عدد من الأسطر قبل وبعد المعالجة، وعدد قليل من أسطر العينات، وإجمالي حرج يدويًا. تكتشف عمليات التحقق الثلاثة هذه معظم الأخطاء المنطقية الصامتة.

باختصار

يعد الذكاء الاصطناعي شريكًا قويًا ينتج بسرعة أكواد SQL وpandas، ولكنه ليس سلطة عمياء. أعطه المخطط والغرض بوضوح؛ اقرأ الكود الذي ينتجه كما لو أنك كتبته بنفسك؛ التحقق من عدد الصفوف ووظائف التركيب والإنتاجية بعد الدمج/الانضمام؛ لا تقم بتشغيله دون اختباره على قاعدة بيانات الإنتاج. عند تصحيح الأخطاء، اهدف إلى حل المشكلة، وليس إسكاتها. الكود الذي يعمل ليس هو الكود الصحيح؛ أنت فقط تستطيع ضمان الدقة.

مهمة التطبيق

اختر سؤال تحليل (على سبيل المثال، "حجم المبيعات الشهري لكل قناة") واطلب رمزًا من الذكاء الاصطناعي مع كل من SQL وpandas. اقرأ كلاً من التعليمات البرمجية سطرًا تلو الآخر، وتحقق من عدد الأسطر بعد الدمج/الانضمام وتحقق يدويًا من مجموع حرج واحد على الأقل. قارن ما إذا كان الرمزان ينتجان نفس النتيجة؛ إذا كان مختلفا، معرفة السبب.

قائمة مرجعية

  • [ ] هل أعطيت الجدول/المخطط والغرض بوضوح إلى الذكاء الاصطناعي؟
  • [ ] هل قرأت وفهمت الكود الذي تم إنتاجه سطرًا تلو الآخر؟
  • [ ] هل قمت بالتحقق من عدد الأسطر بعد الدمج/الانضمام؟
  • [ ] هل قمت بالتحقق من الوظائف التي لم أتعرف عليها من الوثائق؟
  • [ ] هل قمت باختبار الكود على بيانات آمنة/صغيرة أولاً وليس في بيئة الإنتاج؟