كيفية إعادة كتابة استعلامات SQL الخاصة بك في Pandas والمزيد

قبل خمسة عشر عامًا ، كانت هناك بعض المهارات التي يحتاج مطور البرمجيات إلى معرفتها جيدًا ، وسيحصل على فرصة جيدة عند 95٪ من الوظائف الوظيفية المدرجة. تلك المهارات كانت:

  • البرمجة الشيئية.
  • لغات البرمجة.
  • جافا سكريبت و ...
  • SQL.

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

في هذه الأيام ، تأتي البيانات بأشكال وأشكال عديدة ، ولم تعد مرادفة لـ "قاعدة البيانات العلائقية". قد ينتهي بك المطاف مع ملفات CSV ، نص عادي ، باركيه ، HDF5 ، ومن يعرف ماذا. هذا هو المكان الذي يضيء مكتبة Pandas.

ما هو الباندا؟

مكتبة تحليل بيانات Python ، المسماة Pandas ، هي مكتبة Python مصممة لتحليل البيانات ومعالجتها. إنه مفتوح المصدر وبدعم من أناكوندا. مناسب بشكل خاص للبيانات المنظمة (الجدولية). لمزيد من المعلومات ، راجع http://pandas.pydata.org/pandas-docs/stable/index.html.

ماذا يمكنني أن أفعل به؟

جميع الاستعلامات التي كنت تضعها على البيانات من قبل في SQL ، والكثير من الأشياء الأخرى!

عظيم! من أين أبدأ؟

هذا هو الجزء الذي يمكن تخويفه لشخص اعتاد على التعبير عن أسئلة البيانات في مصطلحات SQL.

SQL هي لغة برمجة تعريفية: https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Declarative_languages.

مع SQL ، تعلن ما تريده في جملة تقريبًا تقرأ مثل الإنجليزية.

بناء جملة Pandas مختلف تمامًا عن لغة SQL. في Pandas ، تقوم بتطبيق العمليات على مجموعة البيانات ، وتسلسلها ، من أجل تحويل البيانات وإعادة تشكيلها بالطريقة التي تريدها.

سنحتاج إلى كتاب تفسير العبارات الشائعة!

تشريح استعلام SQL

يتكون استعلام SQL من بعض الكلمات الأساسية المهمة. بين هذه الكلمات الرئيسية ، يمكنك إضافة تفاصيل البيانات ، بالضبط ، التي تريد أن تراها. إليك استعلام هيكلي بدون التفاصيل:

اختر ... من ... من أين ...

تجميع حسب ...

ترتيب حسب…

الحد ... OFFSET ...

هناك مصطلحات أخرى ، ولكن هذه هي الأهم. فكيف نترجم هذه المصطلحات إلى الباندا؟

أولاً ، نحتاج إلى تحميل بعض البيانات في Pandas ، لأنه ليس موجودًا بالفعل في قاعدة البيانات. هنا هو كيف:

حصلت على هذه البيانات في http://ourairports.com/data/.

حدد ، أين ، مميزة ، الحد

فيما يلي بعض عبارات SELECT. نقوم باقتطاع النتائج باستخدام LIMIT ، ونقوم بترشيحها باستخدام WHERE. نحن نستخدم DISTINCT لإزالة النتائج المكررة.

اختر مع شروط متعددة

ننضم إلى شروط متعددة مع إذا كنا نريد فقط مجموعة فرعية من الأعمدة من الجدول ، يتم تطبيق هذه المجموعة الفرعية على زوج آخر من الأقواس المربعة.

ترتيب حسب

بشكل افتراضي ، يقوم Pandas بترتيب الأشياء بترتيب تصاعدي. لعكس ذلك ، تقدم تصاعدي = خطأ.

في ... ليس في

نحن نعرف كيفية التصفية على قيمة ، ولكن ماذا عن قائمة القيم - في حالة؟ في الباندا ، يعمل .isin () المشغل بنفس الطريقة. لنفي أي شرط ، استخدم ~.

تجميع حسب ، COUNT ، ترتيب حسب

التجميع واضح: استخدم عامل التشغيل .groupby (). هناك اختلاف بسيط بين دلالات COUNT في SQL و Pandas. في Pandas ، سيعود .count () عدد القيم غير الفارغة / NaN. للحصول على نفس النتيجة مثل COUNT من SQL ، استخدم .size ().

أدناه ، نجمع أكثر من حقل واحد. يقوم Pandas بفرز الأشياء في قائمة الحقول نفسها افتراضيًا ، لذلك ليست هناك حاجة إلى .sort_values ​​() في المثال الأول. إذا أردنا استخدام حقول مختلفة للفرز ، أو DESC بدلاً من ASC ، كما في المثال الثاني ، يجب أن نكون صريحين:

ما هذه الخدعة باستخدام .to_frame () و .reset_index ()؟ لأننا نريد الفرز حسب حقلنا المحسوب (الحجم) ، يجب أن يصبح هذا الحقل جزءًا من DataFrame. بعد التجميع في Pandas ، نعود بنوع مختلف يسمى GroupByObject. لذلك نحن بحاجة إلى تحويله مرة أخرى إلى DataFrame. مع .reset_index () ، نعيد تشغيل ترقيم الصف لإطار البيانات الخاص بنا.

وجود

في SQL ، يمكنك إضافة تصفية البيانات المجمعة باستخدام شرط HAVING. في Pandas ، يمكنك استخدام .filter () وتوفير وظيفة Python (أو lambda) التي ستُرجع True إذا كان يجب تضمين المجموعة في النتيجة.

أعلى N السجلات

لنفترض أننا قمنا ببعض الاستعلامات الأولية ، ولدينا الآن قاعدة بيانات تسمى by_country ، والتي تحتوي على عدد المطارات في كل بلد:

في المثال التالي ، نطلب الأشياء حسب airport_count ونختار فقط أفضل 10 دول ذات أكبر عدد. المثال الثاني هو الحالة الأكثر تعقيدًا ، حيث نريد "الحالات العشر التالية بعد العشرة الأوائل":

الوظائف التجميعية (MIN ، MAX ، MEAN)

الآن ، وبالنظر إلى هذه البيانات أو مدرج البيانات:

احسب الطول ، والحد الأقصى ، والوسيط ، وطول المدرج:

ستلاحظ أنه مع استعلام SQL هذا ، كل إحصائية هي عمود. ولكن مع هذا التجميع الباندا ، كل إحصاء هو صف:

لا يوجد ما يدعو للقلق - قم ببساطة بتغيير إطار البيانات باستخدام .T للحصول على أعمدة:

انضم

استخدم .merge () للانضمام إلى dataframes Pandas. تحتاج إلى توفير أي الأعمدة للانضمام إليها (left_on و right_on) ، ونوع الصلة: داخلي (افتراضي) ، يسار (يتوافق مع LEFT OUTER في SQL) ، أو اليمين (RIGHT OUTER) ، أو خارجي (FULL OUTER).

اتحاد الجميع والاتحاد

استخدم pd.concat () إلى UNION ALL جهازي بيانات:

لإلغاء تكرار الأشياء (أي ما يعادل UNION) ، يجب عليك أيضًا إضافة .drop_duplicates ().

إدراج

حتى الآن ، كنا نختار الأشياء ، لكن قد تحتاج إلى تعديل الأشياء أيضًا ، في عملية التحليل الاستكشافي. ماذا لو أردت إضافة بعض السجلات المفقودة؟

لا يوجد شيء اسمه INSERT في Pandas. بدلاً من ذلك ، يمكنك إنشاء إطار بيانات جديد يحتوي على سجلات جديدة ، ثم قم بتنسيق الاثنين:

تحديث

نحتاج الآن إلى إصلاح بعض البيانات السيئة في إطار البيانات الأصلي:

حذف

أسهل طريقة (وأكثرها قابلية للقراءة) "لحذف" الأشياء من إطار بيانات Pandas هي تعيين إطار البيانات إلى صفوف تريد الاحتفاظ بها. بدلاً من ذلك ، يمكنك الحصول على مؤشرات الصفوف لحذفها ، و .drop () الصفوف باستخدام هذه المؤشرات:

ثبات

أحتاج أن أذكر شيئًا مهمًا - الثبات. بشكل افتراضي ، تقوم معظم المشغلات المطبقة على إطار بيانات Pandas بإرجاع كائن جديد. يقبل بعض المشغلين المعلمة inplace = صواب ، لذلك يمكنك العمل مع إطار البيانات الأصلي بدلاً من ذلك. على سبيل المثال ، إليك كيفية إعادة تعيين فهرس في مكانه:

ومع ذلك ، يقوم عامل التشغيل .loc في المثال UPDATE أعلاه بتحديد موقع مؤشرات السجلات للتحديثات ، ويتم تغيير القيم في مكانها. أيضًا ، إذا قمت بتحديث جميع القيم في عمود:

أو إضافة عمود محسوب جديد:

هذه الأشياء ستحدث في مكانها.

و اكثر!

إن الشيء الجميل في Pandas هو أنه أكثر من مجرد محرك استعلام. يمكنك القيام بأشياء أخرى باستخدام بياناتك ، مثل:

  • تصدير إلى العديد من التنسيقات:
  • ارسمها:

لرؤية بعض الرسوم البيانية لطيفة حقا!

  • أنشرها.

أفضل وسيلة لتبادل نتائج استعلام Pandas والمؤامرات وأشياء من هذا القبيل هي دفاتر Jupyter (http://jupyter.org/). في الواقع ، يقوم بعض الأشخاص (مثل Jake Vanderplas ، المدهش) ، بنشر الكتب بأكملها في دفاتر Jupyter: https://github.com/jakevdp/PythonDataScienceHandbook.

من السهل إنشاء دفتر ملاحظات جديد:

بعد ذلك:
- انتقل إلى المضيف المحلي: 8888
- انقر فوق "جديد" وإعطاء دفتر الملاحظات الخاص بك
- الاستعلام وعرض البيانات
- أنشئ مستودع GitHub وأضف دفتر ملاحظاتك (الملف بملحق .ipynb).

يحتوي GitHub على عارض مدمج رائع لعرض دفاتر Jupyter بتنسيق Markdown.

والآن ، تبدأ رحلة Pandas الخاصة بك!

آمل أن تكونوا مقتنعين الآن بأن مكتبة Pandas يمكنها خدمتك وكذلك صديقك القديم SQL لأغراض تحليل البيانات الاستكشافية - وفي بعض الحالات ، أفضل. لقد حان الوقت للحصول على بعض البيانات للاستعلام!