Data Analysis

اختيار مؤشرات الصفوف بكفاءة بناءً على شروط الأعمدة في Pandas

Spread the love

Pandas هي مكتبة Python قوية لمعالجة البيانات وتحليلها. وتتضمن إحدى المهام الشائعة تحديد الصفوف من DataFrame بناءً على شروط تُطبق على أعمدة محددة. تستعرض هذه المقالة ثلاث طرق فعالة لاسترجاع مؤشرات الصفوف التي تلبي معيارًا معينًا.

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

الفهرسة البولينية: نهج بسيط وفعال

يوفر الفهرسة البولينية حلاً مختصراً وفعالاً لمعايير الاختيار البسيطة. فهي تستفيد مباشرة من صحة الشرط لتصفية الصفوف.

دعونا نوضح ذلك بمثال:


import pandas as pd

data = {'col1': [1, 2, 3, 4, 5],
        'col2': [6, 7, 8, 9, 10],
        'col3': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)
print(df)

# الحصول على المؤشرات حيث 'col1' أكبر من 2
indices = df[df['col1'] > 2].index.tolist()
print(indices)  # الإخراج: [2, 3, 4]

يقوم هذا الكود أولاً بإنشاء قناع بوليني (df['col1'] > 2)، ثم يستخدمه لتصفية DataFrame، وأخيراً يستخرج مؤشرات الصفوف المحددة باستخدام .index.tolist().

الاستفادة من np.where() في NumPy من أجل المرونة

توفر دالة np.where() في NumPy نهجًا أكثر تنوعًا، وهو مفيد بشكل خاص للشروط المعقدة أو الشروط المتعددة المتزامنة.


import numpy as np

indices = np.where(df['col1'] > 2)[0].tolist()
print(indices)  # الإخراج: [2, 3, 4]

np.where(df['col1'] > 2) تُرجع مجموعة؛ يحتوي العنصر الأول على مصفوفة من المؤشرات التي تلبي الشرط. نقوم بالوصول إلى هذا العنصر باستخدام [0] وتحويله إلى قائمة باستخدام .tolist().

استخدام query() في Pandas لاستعلامات معقدة قابلة للقراءة

تعزز طريقة query() إمكانية القراءة، خاصةً بالنسبة للشروط المعقدة. فهي تسمح بتحديد المعايير باستخدام تعبيرات نصية.


indices = df.query('col1 > 2').index.tolist()
print(indices)  # الإخراج: [2, 3, 4]

# مثال مع شروط متعددة
indices = df.query('col1 > 2 and col2 < 9').index.tolist()
print(indices)  # الإخراج: [2]

تقبل طريقة query() مباشرةً تمثيلًا نصيًا للشرط، مما يحسن إمكانية القراءة بشكل كبير، خاصةً مع الشروط المتعددة أو المعقدة.

الخلاصة: تستعيد كل طريقة مؤشرات بفعالية بناءً على شرط. الفهرسة البولينية هي الأفضل للشروط البسيطة؛ np.where() تُعالج السيناريوهات الأكثر تعقيدًا؛ وquery() تتفوق في إمكانية القراءة لعمليات التصفية المتقدمة.

اترك تعليقاً

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