Pandas هي مكتبة قوية في بايثون لمعالجة البيانات. من المهام الشائعة حذف الصفوف من DataFrame بناءً على قيم الأعمدة. تستعرض هذه المقالة طرقًا فعّالة لذلك.
جدول المحتويات
- حذف الصفوف بكفاءة باستخدام الأقنعة البولينية
- استخدام طريقة
.drop
(أقل كفاءة) - اعتبارات الأداء لمجموعات البيانات الكبيرة
حذف الصفوف بكفاءة باستخدام الأقنعة البولينية
توفر الأقنعة البولينية الطريقة الأكثر إيجازًا وفعالية لإزالة الصفوف بناءً على قيم العمود. فهي تقوم بتصفية DataFrame مباشرةً باستخدام شرط بوليني.
import pandas as pd
# DataFrame نموذجي
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 25, 35],
'City': ['New York', 'London', 'Paris', 'Tokyo']}
df = pd.DataFrame(data)
print("DataFrame الأصلي:n", df)
# إزالة الصفوف حيث العمر هو 25
df = df[df['Age'] != 25]
print("nDataFrame بعد إزالة الصفوف بعمر 25:n", df)
df['Age'] != 25
يُنشئ سلسلة بولينية. True
يشير إلى الصفوف التي لا يكون فيها العمر 25. باستخدام هذا لفهارس df
يتم التصفية مباشرةً، مع الاحتفاظ فقط بالصفوف التي يكون الشرط فيها True
. هذا يتجنب الخطوة الوسيطة لإيجاد الفهارس، مما يحسّن السرعة وكفاءة الذاكرة، خاصةً مع مجموعات البيانات الكبيرة.
استخدام طريقة .drop
(أقل كفاءة)
تقوم طريقة .drop
بإزالة الصفوف حسب تسمية الفهرس. لحذف الصفوف بناءً على قيم العمود، تحتاج أولاً إلى تحديد الفهارس ذات الصلة باستخدام الفهرسة البولينية.
import pandas as pd
# DataFrame نموذجي (كما كان من قبل)
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 25, 35],
'City': ['New York', 'London', 'Paris', 'Tokyo']}
df = pd.DataFrame(data)
print("DataFrame الأصلي:n", df)
# تحديد فهارس الصفوف حيث العمر هو 25
indices_to_drop = df[df['Age'] == 25].index
# إزالة الصفوف باستخدام .drop
df = df.drop(indices_to_drop)
print("nDataFrame بعد إزالة الصفوف بعمر 25:n", df)
# تعديل في المكان (يُعدّل DataFrame الأصلي مباشرةً)
#df.drop(indices_to_drop, inplace=True)
هذا النهج، على الرغم من وضوحه، أقل كفاءة من الأقنعة البولينية، خاصةً مع DataFrames كبيرة، نظرًا للخطوة الإضافية لتحديد ثم إسقاط الفهارس.
اعتبارات الأداء لمجموعات البيانات الكبيرة
بالنسبة لمجموعات البيانات الصغيرة، قد يكون فرق الأداء بين هاتين الطريقتين ضئيلاً. ومع ذلك، مع مجموعات البيانات الكبيرة، تتفوق الأقنعة البولينية بشكل كبير على طريقة .drop
. تعمل الأقنعة البولينية مباشرةً على البيانات الأساسية، بينما تتضمن .drop
إنشاء DataFrame جديد، مما قد يؤدي إلى مشاكل في الذاكرة وأوقات معالجة أبطأ.