Pandas مكتبة قوية في بايثون لمعالجة البيانات وتحليلها. يعد تصفية صفوف DataFrame بناءً على قيم الأعمدة مهمة أساسية في معالجة البيانات. تستعرض هذه المقالة تقنيات متنوعة لتصفية DataFrames في Pandas بكفاءة، تغطي السيناريوهات البسيطة والمعقدة.
محتويات الجدول
- التصفية الأساسية: عمود واحد، شرط واحد
- النفي: تحديد الصفوف التي لا تتطابق مع الشرط
- المقارنات العددية: أكبر من، أصغر من، إلخ
- دمج الشروط: عمليات AND و OR
- التصفية المتقدمة: أعمدة متعددة ومنطق معقد
- التصفية الفعالة باستخدام
isin()
التصفية الأساسية: عمود واحد، شرط واحد
أبسط أشكال التصفية يتضمن تحديد الصفوف حيث يتطابق عمود محدد مع قيمة معينة. يتم تحقيق ذلك باستخدام الفهرسة المنطقية.
import pandas as pd
# DataFrame نموذجي
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 22, 28],
'City': ['New York', 'London', 'Paris', 'Tokyo']}
df = pd.DataFrame(data)
# تحديد الصفوف حيث المدينة هي 'London'
london_residents = df[df['City'] == 'London']
print(london_residents)
يقوم هذا الكود بإنشاء قناع منطقي (df['City'] == 'London'
) وهو True
حيث يكون عمود ‘City’ هو ‘London’ و False
بخلاف ذلك. ثم يتم استخدام هذا القناع لفهرسة DataFrame، لتحديد الصفوف فقط حيث يكون القناع True
.
النفي: تحديد الصفوف التي لا تتطابق مع الشرط
لتحديد الصفوف حيث لا يحتوي العمود على قيمة محددة، قم بنفي الشرط المنطقي باستخدام عامل التشغيل !=
.
# تحديد الصفوف حيث المدينة ليست 'London'
not_london_residents = df[df['City'] != 'London']
print(not_london_residents)
المقارنات العددية: أكبر من، أصغر من، إلخ
بالنسبة للأعمدة العددية، استخدم عوامل التشغيل المقارنة (>
، <
، >=
، <=
) لتصفية بناءً على نطاقات القيم.
# تحديد الصفوف حيث العمر أكبر من 25
older_than_25 = df[df['Age'] > 25]
print(older_than_25)
# تحديد الصفوف حيث العمر أقل من أو يساوي 25
younger_than_or_equal_to_25 = df[df['Age'] <= 25]
print(younger_than_or_equal_to_25)
دمج الشروط: عمليات AND و OR
قم بالتصفية بناءً على قيم أعمدة متعددة من خلال دمج الشروط المنطقية باستخدام العوامل المنطقية &
(AND) و |
(OR). ضع كل شرط بين قوسين.
# تحديد الصفوف حيث المدينة هي 'London' و العمر أكبر من 25
london_and_older = df[(df['City'] == 'London') & (df['Age'] > 25)]
print(london_and_older)
# تحديد الصفوف حيث المدينة هي 'London' أو العمر أكبر من 25
london_or_older = df[(df['City'] == 'London') | (df['Age'] > 25)]
print(london_or_older)
التصفية المتقدمة: أعمدة متعددة ومنطق معقد
للسيناريوهات المعقدة، توفر طريقة query()
قابلية قراءة محسّنة.
# استخدام query() لتحسين القراءة
complex_filter = df.query('(City == "London" and Age > 25) or (Age < 23)')
print(complex_filter)
التصفية الفعالة باستخدام isin()
توفر طريقة isin()
طريقة موجزة للتحقق مما إذا كانت القيم موجودة ضمن قائمة.
cities_to_include = ['London', 'Paris']
filtered_df = df[df['City'].isin(cities_to_include)]
print(filtered_df)
أظهرت هذه المقالة تقنيات متنوعة لتصفية DataFrames في Pandas. يعتمد اختيار الطريقة المناسبة على تعقيد معايير التصفية الخاصة بك. تذكر استخدام الأقواس بشكل صحيح مع العوامل المنطقية لضمان نتائج دقيقة.