Data Science

تطبيق الدوال بكفاءة على أعمدة متعددة في إطار بيانات Pandas

Spread the love

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

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

العمليات المتجهة: أسرع نهج

بالنسبة للعمليات العددية، توفر دوال Pandas المتجهة سرعة فائقة. فهي تعمل مباشرة على الأعمدة بأكملها، مستفيدة من معالجة المصفوفات المحسّنة في NumPy. هذا أسرع بكثير من الطرق التكرارية للمجموعات الكبيرة من البيانات.


import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

# جمع الأعمدة A و B عنصرًا بعنصر
df['Sum_AB'] = df['A'] + df['B']
print(df)

# تربيع القيم في العمود A
df['A_Squared'] = df['A']**2
print(df)

طريقة apply(): العمليات على الصفوف

طريقة apply() متعددة الاستخدامات لتطبيق الدوال على الصفوف (axis=1) أو الأعمدة (axis=0). وهذا مثالي عندما تتطلب دالتك الوصول إلى أعمدة متعددة داخل كل صف.


# دالة لحساب حاصل ضرب العمودين A و B
def multiply_ab(row):
  return row['A'] * row['B']

df['Product_AB'] = df.apply(multiply_ab, axis=1)
print(df)

applymap(): التحويلات على كل عنصر

applymap() تطبق دالة على كل عنصر فردي في DataFrame (أو أعمدة محددة). إنها فعالة للتحويلات البسيطة على كل عنصر.


# تطبيق دالة مخصصة على عناصر في العمودين 'A' و 'C'
def custom_function(x):
    if x > 5:
        return x * 2
    else:
        return x

df[['A', 'C']] = df[['A', 'C']].applymap(custom_function)
print(df)

دوال لامدا للإيجاز

توفر دوال لامدا طريقة مختصرة لتحديد دوال بسيطة، مجهولة الاسم، ضمن السطر، مما يعزز القابلية للقراءة عند استخدامها مع apply() أو طرق أخرى.


# استخدام دالة لامدا مع apply للإيجاز
df['Sum_AB_Lambda'] = df.apply(lambda row: row['A'] + row['B'], axis=1)
print(df)

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

عند العمل مع أعمدة متعددة، توقع اختلافات في أنواع البيانات. يجب أن تتضمن الدوال القوية معالجة الأخطاء (مثل، كتل try-except) لإدارة عدم تطابق الأنواع المحتمل ومنع حدوث أخطاء غير متوقعة.

اختيار الطريقة المناسبة

يعتمد النهج الأمثل على تعقيد دالتك وحجم مجموعة البيانات:

  • العمليات المتجهة: أسرع للعمليات العددية البسيطة على أعمدة متعددة.
  • applymap(): فعالة للعمليات على كل عنصر في الخلايا الفردية عبر أعمدة متعددة.
  • apply() (مع axis=1 أو axis=0): مرنة للعمليات على الصفوف أو الأعمدة التي تحتاج إلى الوصول إلى أعمدة متعددة. يمكن أن تكون أبطأ لـ DataFrames ضخمة.
  • دوال لامدا: تعزز قابلية قراءة التعليمات البرمجية للدوال البسيطة داخل apply() أو طرق أخرى.

أعط الأولوية للعمليات المتجهة كلما أمكن ذلك لأداء مثالي. إن فهم هذه التقنيات يُمكّن من معالجة البيانات بكفاءة في Pandas.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *