تعد Pandas إحدى المكتبات الأكثر شهرة، وعندما كنت أبحث عن طريقة أسهل لتسريع أدائها، اكتشفت FireDucks وأصبحت مهتمًا بها!
قد يواجه برنامج Pandas مشكلة خطيرة في الأداء اعتمادًا على كيفية كتابته. ومع ذلك، كوني عالم بيانات، أرغب في قضاء المزيد والمزيد من الوقت في تحليل البيانات بدلاً من تحسين أداء التعليمات البرمجية الخاصة بي. لذا، سيكون أمرًا رائعًا لو تمكن من القيام بشيء مثل تبادل ترتيب العمليات وتسريع أداء البرنامج تلقائيًا. على سبيل المثال، العملية أ => العملية ب ستكون أبطأ، لذلك سنستبدلها بالعملية ب => العملية أ. (بالطبع، النتيجة مضمونة أن تكون هي نفسها.) يقال إن علماء البيانات ينفقون حوالي 45% من الوقت الذي قضوه في إعداد البيانات، وعندما كنت أفكر في القيام بشيء ما لتسريع العملية، عثرت على وحدة تسمى FireDucks.
من وثائق FireDucks، يبدو أنه مدعوم لمنصات Linux فقط. نظرًا لأنني أستخدم Windows على جهازي الرئيسي، فأنا أرغب في تجربته من WSL2 (نظام Windows الفرعي لنظام Linux)، وهي بيئة يمكنها تشغيل Linux على Windows.
البيئة التي جربتها هي كما يلي.
تم تثبيت WSL بمساعدة وثائق Microsoft التالية؛ توزيعة Linux هي Ubuntu 22.04.1 LTS.
ثم قم بالفعل بتثبيت FireDucks. ومع ذلك، فمن السهل جدًا تثبيته.
تثبيت النقطة Fireucks
سيستغرق تثبيت FireDucks بضع دقائق (جنبًا إلى جنب مع pyarrow وpandas والمكتبات الأخرى).
لقد حاولت تنفيذ التعليمات البرمجية أدناه، وكانت سرعة التحميل سريعة جدًا، واستغرق الباندا 4 ثوانٍ، واستغرق FireDucks 74.5 نانو ثانية فقط.
# 1. analysis based on time period and creative duration # convert timestamp to date/time object df['timestamp_converted'] = pd.to_datetime(df['timestamp'], unit='s ') # define time period def get_part_of_day(hour): if 5استغرقت كل هذه المعالجة المسبقة للبيانات وتحليلها حوالي 8 ثوانٍ في الباندا، بينما يمكن إكمالها في غضون 4 ثوانٍ عند استخدام FireDucks. يمكن تحقيق سرعة مضاعفة تقريبًا.
تحسين الأداء
أحد أكثر الأشياء إرهاقًا في استخدام الباندا هو الانتظار عند تحميل مجموعات كبيرة من البيانات، ثم يتعين علي الانتظار حتى يتم إجراء عملية معقدة مثل التجميع. من ناحية أخرى، نظرًا لأن FireDucks يقوم بالتقييم البطيء، فإن التحميل نفسه لا يستغرق وقتًا على الإطلاق، لذا تتم المعالجة حيثما تكون هناك حاجة إليها، وشعرت أنها كانت مهمة جدًا مع انخفاض كبير في إجمالي وقت الانتظار.
أما بالنسبة للأداء الآخر، فيبدو أنه تم تحقيق أسرع بما يصل إلى 16 مرة مقارنة بالباندا، كما أعلنت المنظمة رسميًا. (سأقارن الأداء مع مختلف المكتبات المنافسة في المرة القادمة.)
تكلفة التعلم صفر
تعد القدرة على اتباع تدوين الباندا الدقيق دون الحاجة إلى التفكير في أي شيء ميزة كبيرة. وبصرف النظر عن FireDucks، هناك مكتبات أخرى لتسريع إطارات البيانات، ولكنها مكلفة للغاية للتعلم ومن السهل جدًا نسيانها.
على سبيل المثال، إذا كنت تريد إضافة أعمدة ذات أقطاب، عليك كتابة شيء مثل هذا.
# pandas df["new_col"] = df["A"] 1 # polars df = df.with_columns((pl.col("A") 1).alias("new_col"))لا حاجة تقريبًا لتغيير الكود الموجود
لدي العديد من ETLs والمشاريع الأخرى التي تستخدم الباندا، وسيكون من الجيد رؤية تحسن في الأداء فقط عن طريق تثبيت بيان الاستيراد واستبداله بـ FireDucks.
إذا كنت تريد إضافتها بشكل أكبر، فلا تتردد في التعليق أدناه.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3