شعار زيفيرنت

استعلم عن Pandas DataFrames باستخدام SQL

التاريخ:

استعلم عن Pandas DataFrames باستخدام SQL
تصوير جيفري تشوم من شركة Pexels (تعديل بواسطة المؤلف)

 

Pandas - أو بشكل أكثر تحديدًا ، حاوية البيانات الأساسية الخاصة بها ، ملف DataFrame - عززت نفسها منذ فترة طويلة باعتبارها بنية تخزين البيانات الجدولية القياسية في النظام البيئي لبيانات Python. يأتي استخدام Pandas DataFrame بمواصفاته الخاصة للوصول إلى البيانات المركبة ومعالجتها وتنفيذها ، وهي المواصفات التي يمكن إتقانها بمرور الوقت والمثابرة بفضل توافقها مع بناء جملة Python ؛ إذا كنت معتادًا على Python ، فأنت بالفعل في طريقك إلى إتقان واجهة Pandas API القياسية.

ومع ذلك ، هناك الكثير من المستخدمين الذين لا يتقنون استخدام Python ، والذين قاموا بدلاً من ذلك بالقفز إلى اللغة بفضل مكانتها البارزة في علم البيانات وتحليل البيانات ، فضلاً عن المجالات والمهن ذات الصلة. قد يكون العديد من أولئك الذين يقومون بالقفزة على دراية بلغة أخرى من لغات علوم البيانات الثقيلة: SQL. فلماذا لا يمكننا الاستعلام عن البيانات في Pandas DataFrames باستخدام SQL ، وهي لغة مكتوبة خصيصًا مع مراعاة الوصول إلى البيانات المجدولة؟

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

Fugue هو إطار عمل تجريدي يتيح للمستخدمين كتابة التعليمات البرمجية بلغة Python أو Pandas الأصلية ، ثم نقلها إلى Spark و Dask.

أحد المكونات الأساسية لهذا الجهد هو FugueSQL. FugueSQL ليس نقي SQL ؛ يصف تركيبته على أنه مزيج "بين SQL و json و python القياسي." ومع ذلك ، يجب أن تجد أنه بالنسبة للاستعلام الأساسي ، يعمل بشكل أو بآخر كما تتوقع. على وجه التحديد ، تم تصميمه "[t] o ليكون متوافقًا تمامًا مع عبارة SQL SELECT القياسية." على هذا النحو ، يكون الأمر أكثر وضوحًا بشكل عام للقادمين الجدد في التعامل مع البيانات في Pandas من الاستعلام عن Pandas في Python.

يمكن تحقيق فوائد FugueSQL في كود متوازي ، جنبًا إلى جنب مع الأهداف الإضافية لمشروع Fugue ، أو مستقل ، وهو الاستعلام عن DataFrames على جهاز كمبيوتر منفرد. في هذه المقالة سوف نلقي نظرة على كيفية بدء تشغيل FugureSQL وتشغيله في عملك الخاص على الفور ، وأمثلة عن كيفية القيام بذلك.

التركيب والتحضير

 
إذا كنت ترغب في تثبيت مكتبة Fugue الكاملة للاستفادة من جميع عروض التوازي الخاصة بها ، فيمكنك التثبيت على هذا النحو:

تثبيت نقطة الشرود

بدلاً من ذلك ، إذا كنت تريد فقط FugueSQL API - وهو كل ما هو مطلوب للأمثلة الواردة في هذه المقالة - فثبّت على هذا النحو:

خطأ تثبيت نقطة [sql]

بمجرد التثبيت ، قم باستيراد المكتبات المطلوبة:

استيراد الباندا مثل pd من fugue_sql import fsql

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

سيتألف إطار DataFrame البسيط من 4 أعمدة: عدد معين من عنوان الكتاب الهزلي ؛ ناشر الكتاب الهزلي. المعينين بشكل احترافي ومستقل درجة الكتاب الهزلي (على مقياس تصنيف 10 نقاط) ؛ قيمة الكتاب الهزلي في الدرجة المخصصة له.

إليك الكود لإنجاز ما تم توضيحه أعلاه:

comics_df = pd.DataFrame ({'book': ['Secret Wars 8'، 'Tomb of Dracula 10'، 'Amazing Spider-Man 252'، 'New Mutants 98'، 'Eternals 1'، 'Amazing Spider-Man 300 '،' Department of Truth 1 ']،' publisher ': [' Marvel '،' Marvel '،' Marvel '،' Marvel '،' Marvel '،' Marvel '،' Image ']،' grade ': [9.6 ، 5.0، 7.5، 8.0، 9.2، 6.5، 9.8] ، "القيمة": [400، 2500، 300، 600، 400، 750، 175]}) print (comics_df)
 قيمة درجة ناشر الكتاب 0 Secret Wars 8 Marvel 9.6 400 1 Tomb of Dracula 10 Marvel 5.0 2500 2 Amazing Spider-Man 252 Marvel 7.5 300 3 New Mutants 98 Marvel 8.0 600 Eternals 4 Marvel 1 9.2 400 Amazing Spider-Man 5 Marvel 300 6.5 750 قسم الحقيقة 6 صورة 1 9.8

لا تحتاج إلى فهم (أو الاهتمام) بأي شيء أكثر حول جمع الكتب المصورة لفهم الأمثلة التالية ، لذلك دعنا ندخلها.

مثال 1: أي من كتبي حصل على درجات أعلى من 8.0؟

 
عنوان القسم يقول كل شيء. سنستخدم FugueSQL وبيان SELECT القياسي للاستعلام عن Pandas DataFrame لتحديد أي من كتبي المصورة تم تصنيفها أعلى من 8.0 على مقياس من 10 نقاط.

للقيام بذلك ، نحتاج أولاً إلى تحديد عبارة SQL:

# أي من كتبي حصل على درجات أعلى من 8.0؟ query_1 = "" "حدد الكتاب والناشر والصف والقيمة من comics_df حيث الصف> 8.0 PRINT" ""

لاحظ استخدام Pandas DataFrame كاسم الجدول في عبارة SELECT الخاصة بنا.

بمجرد تحديد الاستعلام ، يجب تنفيذه باستخدام محرك استعلام Fugue:

fsql (query_1) .run ()

وهنا استعلامنا الذي تم إرجاعه:

كتاب PandasDataFrame: str | الناشر: str | الصف: مزدوج | القيمة: طويل ---------------------------------- ---------------------------- + ------------- + ------- ----- + ---------- Secret Wars 8 | Marvel | 9.6 | 400 Eternals 1 | Marvel | 9.2 | 400 Department of Truth 1 | Image | 9.8 | 175 العدد الإجمالي: 3

هناك 3 كتب في DataFrame لدينا تم تصنيفها أعلى من 8.0: Secret Wars 8 ؛ الأبدية 1 ؛ وقسم الحقيقة 1.

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

مثال 2: أي من كتبي أعلى من 500؟

 
لنلقِ نظرة على مثال ثانٍ ، حيث سنجد أيًا من هذه الكتب تزيد قيمته عن 500 دولار ، بالنظر إلى درجتها والسوق الحالي في وقت نشر هذه المقالة.

مرة أخرى ، سنقوم أولاً بتعريف عبارة SQL ، ثم ننفذها باستخدام محرك FugueSQL.

# أي من كتبي تقدر قيمتها بأكثر من 500؟ query_2 = "" "حدد الكتاب ، الناشر ، الدرجة ، القيمة من comics_df حيث القيمة> 500 PRINT" "" fsql (query_2) .run ()

والنتائج:

كتاب PandasDataFrame: str | الناشر: str | الصف: مزدوج | القيمة: طويل ---------------------------------- ---------------------------- + ------------- + ------- ----- + ---------- Tomb of Dracula 10 | Marvel | 5.0 | 2500 New Mutants 98 | Marvel | 8.0 | 600 Amazing Spider-Man 300 | Marvel | 6.5 | 750 العدد الإجمالي: 3

من بين الكتب الموجودة في DataFrame لدينا ، هناك 3 كتب تزيد قيمتها عن 500 دولار. كل واحد من هؤلاء هو أول ظهور كامل لثلاث شخصيات مشهورة جدًا ، مما أدى إلى قيمهم العالية نسبيًا: Blade the Vampire Hunter؛ قائمة الاموات؛ والسم ، على التوالي.

مثال 3: أي من كتبي تم نشره بواسطة Image؟

 
في مثالنا الأخير ، دعنا نلقي نظرة على أي من هذه الرسوم الهزلية تم نشرها بواسطة Image Comics.

# أي من كتبي تم نشره بواسطة Image؟ query_3 = "" "SELECT book، publisher، grade، value FROM comics_df WHERE publisher = 'Image' PRINT" "" fsql (query_3) .run ()
كتاب PandasDataFrame: str | الناشر: str | الصف: مزدوج | القيمة: طويل ---------------------------------- ---------------------------- + ------------- + ------- ----- + ---------- دائرة الحقيقة 1 | صورة | 9.8 | 175 العدد الإجمالي: 1

واحد فقط من هؤلاء يناسب القانون: قسم الحقيقة 1 ، تحفة معاصرة مكتوبة ببراعة تستند إلى فكرة أن الإيمان الشعبي بنظريات المؤامرة يغير الواقع في الواقع ، هو الكتاب الوحيد الذي نشرته Image.

وما هو نوع البيانات لنتيجة الاستعلام التي تم إرجاعها؟ دعنا نعيد تشغيل الاستعلام أعلاه ، ونخزنه في متغير ، ونفحص نوعه.

نتيجة = fsql (query_3) .run () طباعة (نوع (نتيجة))
fugue.dataframe.dataframes.DataFrames

تكون النتيجة التي تم إرجاعها في شكل إطار بيانات Fugue. اكتشف المزيد حول إطار بيانات Fugue هنا، وكيفية معالجة النتائج التي تم إرجاعها.

 
للحصول على أمثلة إضافية ، انظر هذا البرنامج التعليمي FugueSQL.

 
 
ماثيو مايو (@ mtmayo13) هو عالم بيانات ورئيس تحرير KDnuggets ، المصدر الأساسي لعلوم البيانات والتعلم الآلي عبر الإنترنت. تكمن اهتماماته في معالجة اللغة الطبيعية ، وتصميم الخوارزميات وتحسينها ، والتعلم غير الخاضع للإشراف ، والشبكات العصبية ، والأساليب الآلية للتعلم الآلي. ماثيو حاصل على درجة الماجستير في علوم الكمبيوتر ودبلوم الدراسات العليا في استخراج البيانات. يمكن الوصول إليه على editor1 في kdnuggets [dot] com.

المصدر: https://www.kdnuggets.com/2021/10/query-pandas-dataframes-sql.html

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة