شعار زيفيرنت

كيفية معالجة DataFrame بملايين الصفوف في ثوانٍ

التاريخ:

By رومان أوراك، عالم بيانات أول


كيف يتم معالجة DataFrame بملايين الصفوف في ثوانٍ؟
تصوير جيسون بلاكيي on Unsplash

 

يمر علم البيانات بلحظة نهضة. من الصعب تتبع جميع أدوات علوم البيانات الجديدة التي لديها القدرة على تغيير طريقة عمل علوم البيانات.

لقد تعرفت على محرك معالجة البيانات الجديد هذا مؤخرًا فقط في محادثة مع زميل ، وهو أيضًا عالم بيانات. لقد أجرينا مناقشة حول معالجة البيانات الضخمة ، والتي تعد في طليعة الابتكار في هذا المجال ، وظهرت هذه الأداة الجديدة.

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

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

هذا المجال النشط للابتكار جلب لنا أيضًا أدوات مثل فايكس، والتي تحاول حل هذه المشكلة بجعل المعالجة على جهاز واحد أكثر كفاءة في الذاكرة.

ولا ينتهي الأمر عند هذا الحد. هناك أداة أخرى لمعالجة البيانات الضخمة يجب أن تعرفها ...

قابل Terality

 

كيف يتم معالجة DataFrame بملايين الصفوف في ثوانٍ؟

تصوير ماكينا صريح on Unsplash


 

التزمت هو محرك معالجة بيانات بدون خادم يقوم بمعالجة البيانات في السحابة. ليست هناك حاجة لإدارة البنية التحتية لأن Terality تهتم بتوسيع نطاق موارد الحوسبة. جمهورها المستهدف هم المهندسين وعلماء البيانات.

لقد قمت بتبادل بعض رسائل البريد الإلكتروني مع فريق Terality لأنني كنت مهتمًا بالأداة التي طوروها. أجابوا بسرعة. كانت هذه أسئلتي للفريق:


كيف يتم معالجة DataFrame بملايين الصفوف في ثوانٍ؟
رسالتي الإلكترونية رقم n إلى فريق Terality (لقطة شاشة للمؤلف)

ما هي الخطوات الرئيسية لمعالجة البيانات باستخدام Terality؟

  1. يأتي Terality مع عميل Python الذي تقوم باستيراده إلى Jupyter Notebook.
  2. ثم تكتب الرمز في "طريقة الباندا" يقوم و Terality بتحميل بياناتك بأمان ويهتم بالمعالجة الموزعة (والقياس) لحساب تحليلك.
  3. بعد اكتمال المعالجة ، يمكنك تحويل البيانات مرة أخرى إلى إطار بيانات الباندا العادي ومتابعة التحليل محليًا.

ماذا يحدث وراء الكواليس؟

 
طور فريق Terality محرك معالجة بيانات خاصًا - إنه ليس مفترق طرق Spark أو Dask.

كان الهدف هو تجنب عيوب Dask ، التي لا تحتوي على نفس بناء الجملة مثل الباندا ، فهي غير متزامنة ، ولا تحتوي على جميع وظائف الباندا ولا تدعم القياس التلقائي.

يحل محرك معالجة البيانات في Terality هذه المشكلات.

هل Terality مجاني للاستخدام؟

 
التزمت لديه خطة مجانية يمكنك من خلالها معالجة ما يصل إلى 500 جيجابايت من البيانات شهريًا. كما يقدم خطة مدفوعة للشركات والأفراد الذين لديهم متطلبات أكبر.

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

كيف يحسب Terality استخدام البيانات؟ (من وثائق Terality)

ضع في اعتبارك مجموعة بيانات بحجم إجمالي يبلغ 15 غيغابايت في الذاكرة ، كما سيتم إرجاعها من خلال العملية df.memory_usage (عميق = صحيح) .sum ().

تشغيل عملية واحدة (1) على مجموعة البيانات هذه ، مثل ملف .مجموع أو .sort_values، ستستهلك 15 غيغابايت من البيانات المعالجة في Terality.

يتم تسجيل الاستخدام القابل للفوترة فقط عند دخول تشغيل المهمة إلى حالة النجاح.

ماذا عن خصوصية البيانات؟

 
عندما يقوم مستخدم بإجراء عملية قراءة ، يقوم عميل Terality بنسخ مجموعة البيانات الموجودة على التخزين السحابي الآمن لـ Terality على Amazon S3.

تتبع Terality سياسة صارمة بشأن خصوصية البيانات وحمايتها. إنهم يضمنون أنهم لن يستخدموا البيانات ومعالجتها بشكل آمن.

Terality ليست حلاً للتخزين. سيحذفون بياناتك كحد أقصى في غضون 3 أيام بعد إغلاق جلسة عميل Terality.

تحدث معالجة البيانات التجريبية حاليًا على AWS في منطقة فرانكفورت.

راجع قسم الأمان لمزيد من المعلومات.

هل يجب أن تكون البيانات عامة؟

 
لا!

يحتاج المستخدم إلى الوصول إلى مجموعة البيانات الموجودة على الجهاز المحلي الخاص به وسيقوم Terality بمعالجة عملية التحميل خلف الكواليس.

تتم أيضًا عملية التحميل بشكل متوازي بحيث يتم ذلك بشكل أسرع.

هل يمكن لـ Terality معالجة البيانات الضخمة؟

 
في هذه اللحظة، في نوفمبر 2021 ، Terality لا تزال في مرحلة تجريبية. تم تحسينه لمجموعات بيانات تصل إلى 100-200 غيغابايت.

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

لنأخذها لاختبار القيادة

 


كيف يتم معالجة DataFrame بملايين الصفوف في ثوانٍ؟
تصوير يوجين تشيستياكوف on Unsplash

 

لقد فوجئت أنه يمكنك ببساطة استبدال بيان استيراد الباندا بحزمة Terality وإعادة إجراء تحليلك.

ملاحظة ، بمجرد استيراد عميل Python الخاص بـ Terality ، لن يتم تنفيذ معالجة البيانات على جهازك المحلي ولكن باستخدام محرك معالجة البيانات الخاص بـ Terality في السحابة.

الآن ، دعنا نثبِّت Terality ونجربها عمليًا ...

اقامة

 
يمكنك تثبيت Terality ببساطة عن طريق تشغيل:

pip install --upgrade terality

ثم تقوم بإنشاء حساب مجاني على التزمت وإنشاء مفتاح API:


كيف يتم معالجة DataFrame بملايين الصفوف في ثوانٍ؟
إنشاء مفتاح API جديد قيد التشغيل التزمت (لقطة شاشة من قبل المؤلف)

 

الخطوة الأخيرة هي إدخال مفتاح API الخاص بك (أيضًا استبدل البريد الإلكتروني ببريدك الإلكتروني):

لنبدأ صغير ...

 
الآن ، بعد أن تم تثبيت Terality لدينا ، يمكننا تشغيل مثال صغير للتعرف عليه.

تُظهر الممارسة أنك تحصل على أفضل ما في العالمين أثناء استخدام كل من Terality و pandas - أحدهما لتجميع البيانات والآخر لتحليل التجميع محليًا

يقوم الأمر أدناه بإنشاء terality.DataFrame عن طريق استيراد pandas.DataFrame:

import pandas as pd
import terality as tedf_pd = pd.DataFrame({"col1": [1, 2, 2], "col2": [4, 5, 6]})
df_te = te.DataFrame.from_pandas(df_pd)

الآن ، بما أن البيانات موجودة في سحابة Terality ، يمكننا متابعة التحليل:

df_te.col1.value_counts()

إجراء عمليات التصفية وعمليات الباندا الأخرى المألوفة:

df_te[(df_te["col1"] >= 2)]

بمجرد الانتهاء من التحليل ، يمكننا تحويله مرة أخرى إلى pandas DataFrame باستخدام:

df_pd_roundtrip = df_te.to_pandas()

يمكننا التحقق من تساوي أطر البيانات:

pd.testing.assert_frame_equal(df_pd, df_pd_roundtrip)

لنذهب إلى أبعد الحدود ...

 
أود أن أقترح عليك التحقق دفتر ملاحظات Jupyter لبدء التشغيل السريع من Terality ، والذي يأخذك عبر تحليل 40 جيجابايت من مجموعة بيانات تعليقات Reddit. لديهم أيضًا برنامج تعليمي مع مجموعة بيانات أصغر حجمًا تبلغ 5 غيغابايت.

نقرت على Jupyter Notebook من Terality وقمت بمعالجة مجموعة بيانات 40 غيغابايت. تقرأ البيانات في 45 ثانية وتحتاج إلى 35 ثانية لفرزها. استغرق الدمج مع جدول آخر دقيقة و 1 ثانية. شعرت أنني أعالج مجموعة بيانات أصغر بكثير على الكمبيوتر المحمول.

ثم حاولت تحميل نفس مجموعة البيانات بسعة 40 غيغابايت مع حيوانات الباندا على الكمبيوتر المحمول الخاص بي مع 16 غيغابايت من الذاكرة الرئيسية - أعادت استثناء نفاد الذاكرة.


يأخذك البرنامج التعليمي الرسمي Terality خلال تحليل ملف 5 جيجابايت مع تعليقات Reddit.

وفي الختام

 


كيف يتم معالجة DataFrame بملايين الصفوف في ثوانٍ؟
تصوير سفين شيرمير on Unsplash

 

لقد لعبت مع Terality قليلاً وكانت تجربتي بدون مشاكل كبيرة. لقد فاجأني هذا لأنهم لا يزالون رسميًا في مرحلة تجريبية. علامة رائعة أيضًا هي أن فريق الدعم الخاص بهم يستجيب حقًا.

أرى حالة استخدام رائعة لـ Terality عندما يكون لديك مجموعة بيانات ضخمة لا يمكنك معالجتها على جهازك المحلي - قد يكون ذلك بسبب قيود الذاكرة أو سرعة المعالجة.

قد يتطلب استخدام Dask (أو Spark) تدوير مجموعة والتي ستكلف أكثر بكثير من استخدام Terality لإكمال تحليلك.

أيضًا ، يعد تكوين مثل هذه المجموعة عملية مرهقة ، بينما مع Terality لا تحتاج إلا إلى تغيير بيان الاستيراد.

الشيء الآخر الذي أحبه هو أنه يمكنني استخدامه في JupyterLab المحلي ، لأن لدي العديد من الإضافات والتكوينات والوضع المظلم وما إلى ذلك.

إنني أتطلع إلى التقدم الذي يحرزه الفريق مع Terality في الأشهر المقبلة.

 
 
رومان أوراك هو مهندس تعلم آلي حقق نجاحات ملحوظة في تحسين أنظمة تصنيف المستندات والتوصية بالعناصر. يتمتع رومان بخبرة في إدارة الفرق وتوجيه المبتدئين وشرح المفاهيم المعقدة لغير المهندسين.

أصلي. تم إعادة النشر بإذن.

المصدر: https://www.kdnuggets.com/2022/01/process-dataframe-millions-rows-seconds.html

بقعة_صورة

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

بقعة_صورة