Pandas مكتبة قوية في بايثون لمعالجة البيانات وتحليلها. تتكرر الحاجة لتطبيق نفس الدالة على أعمدة متعددة في DataFrame. تشرح هذه المقالة طرقًا فعالة لتحقيق ذلك، وتجنب المعالجة المتكررة عمودًا بعمود.
محتويات الجدول
- العمليات المتجهة: أسرع نهج
- طريقة
apply()
: العمليات على الصفوف applymap()
: التحويلات على كل عنصر- دوال لامدا للإيجاز
- معالجة أنواع البيانات المتنوعة
- اختيار الطريقة المناسبة
العمليات المتجهة: أسرع نهج
بالنسبة للعمليات العددية، توفر دوال 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.