Data Analysis

إنشاء أعمدة DataFrame بكفاءة بناءً على شروط في Pandas

Spread the love

Pandas مكتبة قوية في بايثون لمعالجة البيانات وتحليلها. إنشاء أعمدة جديدة في DataFrame بناءً على شروط هو مهمة شائعة. تستعرض هذه المقالة عدة طرق فعالة لتحقيق ذلك، مع إعطاء الأولوية لكل من الوضوح والأداء. سنغطي القوائم الإدراكية (List comprehensions)، وطرق NumPy، وpandas.DataFrame.apply، وpandas.Series.map()، مع مقارنة نقاط القوة والضعف لكل منها.

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

القوائم الإدراكية لإنشاء أعمدة شرطية

توفر القوائم الإدراكية بناء جملة موجزة لإنشاء أعمدة جديدة بناءً على شروط بسيطة. إنها فعالة بشكل خاص بالنسبة لـ DataFrames الأصغر حجمًا. ومع ذلك، قد يتدهور أداءها مع مجموعات البيانات الأكبر حجمًا.


import pandas as pd

data = {'Sales': [100, 200, 150, 250, 300],
        'Region': ['North', 'South', 'North', 'East', 'West']}
df = pd.DataFrame(data)

df['SalesCategory'] = ['High' if sales > 200 else 'Low' for sales in df['Sales']]
print(df)

الاستفادة من NumPy للمنطق الشرطي المُحسّن

يوفر NumPy عمليات مُحسّنة بشكل كبير، مما يحسّن الأداء بشكل ملحوظ، خاصةً بالنسبة لـ DataFrames الأكبر حجمًا. np.where() مفيد بشكل خاص للتعيينات الشرطية.


import numpy as np

df['SalesCategory_np'] = np.where(df['Sales'] > 200, 'High', 'Low')
print(df)

استخدام pandas.DataFrame.apply() للمنطق الشرطي المرن

توفر طريقة apply() مرونة أكبر للمنطق الشرطي الأكثر تعقيدًا، حيث تُطبق الدوال صفًا صفًا (axis=1) أو عمودًا عمودًا (axis=0). ومع ذلك، قد تكون أبطأ من NumPy بالنسبة لـ DataFrames كبيرة جدًا، خاصةً مع الدوال كثيفة الحساب.


def categorize_sales(row):
    if row['Region'] == 'North' and row['Sales'] > 150:
        return 'High North'
    elif row['Sales'] > 200:
        return 'High'
    else:
        return 'Low'

df['SalesCategory_apply'] = df.apply(categorize_sales, axis=1)
print(df)

تعيين القيم بكفاءة مع pandas.Series.map()

طريقة map() مثالية لتطبيق التعيينات من مجموعة قيم إلى أخرى، مما يخلق أعمدة تصنيفية بكفاءة.


region_mapping = {'North': 'Northern Region', 'South': 'Southern Region', 'East': 'Eastern Region', 'West': 'Western Region'}
df['RegionMapped'] = df['Region'].map(region_mapping)
print(df)

مقارنة الأداء والتوصيات

تعتمد الطريقة المثلى على عوامل مثل تعقيد الشرط، وحجم DataFrame، ومتطلبات الأداء. بالنسبة للشروط البسيطة ومجموعات البيانات الأصغر، تكون القوائم الإدراكية موجزة. توفر عمليات NumPy المُحسّنة ميزة أداء كبيرة لمجموعات البيانات الأكبر والمنطق الأكثر تعقيدًا. توفر apply() مرونة للعمليات المعقدة صفًا صفًا أو عمودًا عمودًا، بينما تتميز map() بتعيينات القيم. يُوصى بقياس الأداء على بياناتك المحددة لتحديد النهج الأكثر كفاءة.

اترك تعليقاً

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