البرمجة

تحسين أداء Pandas: تعامل فعّال مع البيانات وتجنب الأخطاء

في مقالنا اليوم، سنستعرض كيفية تعيين قيم NaN في خلايا إطار بيانات باستخدام مكتبة Pandas في لغة البرمجة بايثون. يظهر الكود المرفق محاولة لتحقيق هذا الهدف باستخدام شرط منطقي، ولكن يُلاحظ أن هناك مشكلة في السطر الأخير يتم فيه محاولة تعيين قيم NaN للصفوف التي تحققت لها الشرط. هذا ينتج عن نسخة فرعية من إطار البيانات، مما يتسبب في إصدار تحذير وعدم تحقيق التغيير المتوقع.

لحل هذه المشكلة، يجب أن نفهم كيفية التعامل مع نسخ البيانات في Pandas وكيفية تحديد الصفوف والأعمدة بشكل صحيح. بدلاً من استخدام الفهرس القياسي، يمكننا استخدام الدالة loc لتحديد الصفوف التي تستوفي شرطنا وتعيين لها القيم NaN. يمكننا تحقيق ذلك عبر الكود التالي:

python
import pandas as pd import numpy as np mydata = {'x': [10, 50, 18, 32, 47, 20], 'y': ['12', '11', 'N/A', '13', '15', 'N/A']} df = pd.DataFrame(mydata) # استخدام loc لتحديد الصفوف وتعيين NaN للقيم التي تحققت لها الشرط df.loc[df['y'] == 'N/A', 'y'] = np.nan

يقوم هذا الكود بتحديد الصفوف التي تحتوي على قيم ‘N/A’ في العمود ‘y’ ويعين لها NaN. باستخدام loc بدلاً من iloc أو ix، نتجنب المشكلة الناتجة عن العمل على نسخ فرعية.

يعتبر هذا الحل أكثر صحة ويضمن تحقيق التغييرات المتوقعة داخل الإطار الأصلي دون إصدار تحذيرات. يمكنك الآن تنفيذ هذا الكود بنجاح لتحقيق الهدف المطلوب.

المزيد من المعلومات

بالطبع، دعونا نتناول بعض المعلومات الإضافية حول كيفية التعامل مع بيانات Pandas وتحسين الأداء عند التعامل مع إطارات البيانات الكبيرة.

في البداية، يمكن أن يكون تحديد الصفوف بشكل أكثر دقة هو فكرة جيدة. على سبيل المثال، إذا كنت ترغب في التأكد من أن القيم ‘N/A’ تتمثل في قيم NaN بشكل صحيح، يمكنك استخدام الدالة replace بدلاً من القيام بتعيين قيم مباشرة. هذا يجعل الكود أكثر وضوحًا وأكثر قوة، كما يلي:

python
import pandas as pd import numpy as np mydata = {'x': [10, 50, 18, 32, 47, 20], 'y': ['12', '11', 'N/A', '13', '15', 'N/A']} df = pd.DataFrame(mydata) # استخدام replace لتحويل القيم 'N/A' إلى NaN بشكل أكثر وضوحًا df.replace('N/A', np.nan, inplace=True)

تمثل الخاصية inplace=True في استخدام نفس الإطار البيانات الأصلي بدلاً من إعادة إنشاء نسخة جديدة.

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

python
nan_rows = df[df.isna().any(axis=1)]

هذا الكود يعيد الصفوف التي تحتوي على قيم NaN في أي من أعمدة الإطار البيانات.

في الختام، يمكننا التحدث عن أفضل الممارسات عند التعامل مع بيانات Pandas. من المهم دائمًا تجنب تحديث النسخ الفرعية من الإطار البيانات واستخدام الدوال المناسبة لتعديل البيانات في مكانها دون إصدار تحذيرات. استخدام الدوال مثل loc و replace يساعد في تحسين فهم الكود وتجنب المشاكل المحتملة.

زر الذهاب إلى الأعلى