تحليل البيانات باستخدام بانداز: كيفية حذف قائمة من الصفوف من إطار البيانات في Pandas

دقائق القراءة: 4

مقدمة إلى حذف الصفوف في Pandas

يُعد Pandas DataFrame بنية بيانات ثنائية الأبعاد تتيح تخزين البيانات في صفوف وأعمدة، وهو من أكثر الأدوات استخداماً في تحليل البيانات ومعالجتها داخل لغة Python. وعند العمل على مجموعات بيانات حقيقية، قد تحتاج إلى حذف قائمة محددة من الصفوف لأسباب متعددة، مثل تنظيف البيانات، إزالة القيم غير المرغوبة، أو تجهيز البيانات قبل بناء نموذج تحليلي أو تدريبي.

في هذا الدليل العملي، ستتعرف على أكثر من طريقة لحذف قائمة من الصفوف من إطار بيانات Pandas، سواء بالاعتماد على الفهارس، أو على نطاق محدد، أو باستخدام شروط منطقية.

شرح عملي لحذف الصفوف من إطار بيانات بانداز باستخدام بايثون

ما هي الدالة drop() في Pandas؟

لحذف صف أو عمود من إطار البيانات، تُستخدم الدالة drop(). هذه الدالة مرنة جداً، إذ تسمح لك بحذف عناصر محددة عبر الفهرس أو الاسم، كما يمكن تنفيذ العملية على الصفوف أو الأعمدة بحسب الإعدادات التي تمررها إليها.

فهم المحور axis داخل إطار البيانات

  • الصفوف يُشار إليها باستخدام axis=0.
  • الأعمدة يُشار إليها باستخدام axis=1.

كيف يتم تعريف التسميات Labels؟

  • الصفوف تُعرّف افتراضياً عبر الفهرس العددي الذي يبدأ من 0.
  • الأعمدة تُعرّف بأسمائها النصية.

أهم معاملات الدالة drop()

  • index: قائمة الصفوف المطلوب حذفها.
  • axis=0: يحدد أن عملية الحذف ستتم على الصفوف.
  • inplace=True: ينفذ الحذف على إطار البيانات نفسه بدلاً من إنشاء كائن جديد.

إنشاء إطار بيانات تجريبي في Pandas

سنستخدم إطار بيانات تجريبياً يحتوي على الأعمدة product_name وUnit_Price وNo_Of_Units وAvailable_Quantity وAvailable_Since_Date. كما يتضمن بعض القيم المفقودة مثل NaN وNaT لتقليد البيانات الواقعية.

import pandas as pd

data = {
    "product_name": ["Keyboard", "Mouse", "Monitor", "CPU", "CPU", "Speakers", pd.NaT],
    "Unit_Price": [500, 200, 5000.235, 10000.550, 10000.550, 250.50, None],
    "No_Of_Units": [5, 5, 10, 20, 20, 8, pd.NaT],
    "Available_Quantity": [5, 6, 10, "Not Available", "Not Available", pd.NaT, pd.NaT],
    "Available_Since_Date": ['11/5/2021', '4/23/2021', '08/21/2021', '09/18/2021', '09/18/2021', '01/05/2021', pd.NaT]
}

df = pd.DataFrame(data)
df

وسيظهر إطار البيانات بالشكل التالي:

الفهرس product_name Unit_Price No_Of_Units Available_Quantity Available_Since_Date
0 Keyboard 500.000 5 5 11/5/2021
1 Mouse 200.000 5 6 4/23/2021
2 Monitor 5000.235 10 10 08/21/2021
3 CPU 10000.550 20 Not Available 09/18/2021
4 CPU 10000.550 20 Not Available 09/18/2021
5 Speakers 250.500 8 NaT 01/05/2021
6 NaT NaN NaT NaT NaT

بعد كل عملية حذف، يمكنك طباعة df لمراجعة النتيجة مباشرة والتحقق من الصفوف المتبقية.

كيفية حذف قائمة من الصفوف حسب الفهرس في Pandas

إذا كنت تعرف أرقام الصفوف التي تريد حذفها، فيمكنك تمرير قائمة الفهارس مباشرة إلى الدالة drop().

df.drop([5, 6], axis=0, inplace=True)
df

شرح ما يحدث في هذا المثال

  • [5, 6]: تمثل فهارس الصفوف المراد حذفها.
  • axis=0: تؤكد أن الحذف يخص الصفوف وليس الأعمدة.
  • inplace=True: يطبق التغيير على نفس الكائن df.

بعد حذف الصفين ذوي الفهرسين 5 و6، سيبقى إطار البيانات كالتالي:

الفهرس product_name Unit_Price No_Of_Units Available_Quantity Available_Since_Date
0 Keyboard 500.000 5 5 11/5/2021
1 Mouse 200.000 5 6 4/23/2021
2 Monitor 5000.235 10 10 08/21/2021
3 CPU 10000.550 20 Not Available 09/18/2021
4 CPU 10000.550 20 Not Available 09/18/2021

تُعد هذه الطريقة مناسبة عندما تكون الصفوف المطلوب حذفها معروفة مسبقاً بشكل واضح.

كيفية حذف صفوف ضمن نطاق فهارس محدد

في بعض الحالات، قد لا تحتاج إلى حذف صفوف منفصلة، بل مجموعة متتالية من الصفوف ضمن نطاق معين. هنا يمكن الاستفادة من df.index لتحديد هذا النطاق وتمريره إلى drop().

df.drop(df.index[2:4], inplace=True)
df

ماذا يعني df.index[2:4]؟

  • يُنشئ نطاقاً يبدأ من الفهرس 2 وينتهي قبل 4.
  • هذا يعني حذف الصفين 2 و3.
  • الفهرس 4 لن يُحذف لأن الحد الأعلى في التقطيع Slicing غير مشمول.

بعد تنفيذ العملية، سيصبح إطار البيانات على النحو التالي:

الفهرس product_name Unit_Price No_Of_Units Available_Quantity Available_Since_Date
0 Keyboard 500.00 5 5 11/5/2021
1 Mouse 200.00 5 6 4/23/2021
4 CPU 10000.55 20 Not Available 09/18/2021

هذه الطريقة مفيدة عند تنظيف البيانات على دفعات أو عند استبعاد جزء متصل من السجلات.

كيفية حذف جميع الصفوف بعد فهرس معين

إذا كنت ترغب في الاحتفاظ بجزء محدد من البيانات وحذف كل ما بعده، فيمكنك استخدام iloc[]. وتُستخدم هذه الأداة لتحديد الصفوف بحسب موقعها العددي داخل إطار البيانات.

df = df.iloc[:2]
df

كيف يعمل هذا التقطيع؟

  • :2 يعني اختيار الصفوف من البداية وحتى قبل الموضع 2.
  • بالتالي سيتم الاحتفاظ بالصفين ذوي الموضعين 0 و1 فقط.
  • كل الصفوف التي تلي ذلك سيتم استبعادها من الناتج.

بعد التطبيق، سيصبح إطار البيانات كالتالي:

الفهرس product_name Unit_Price No_Of_Units Available_Quantity Available_Since_Date
0 Keyboard 500.0 5 5 11/5/2021
1 Mouse 200.0 5 6 4/23/2021

تُستخدم هذه الطريقة كثيراً عند تقسيم البيانات إلى عينات، أو عند إعداد جزء من البيانات للاختبار أو التدريب.

كيفية حذف الصفوف باستخدام شروط متعددة

من أقوى مزايا Pandas أنك تستطيع حذف الصفوف اعتماداً على شروط منطقية دقيقة. على سبيل المثال، قد ترغب في حذف الصفوف التي تقع فيها قيمة عمود معين بين حدين رقميين.

df.drop(df[(df['Unit_Price'] > 400) & (df['Unit_Price'] < 600)].index, inplace=True)
df

شرح الشيفرة السابقة

  • (df['Unit_Price'] > 400) & (df['Unit_Price'] < 600): شرط يحدد الصفوف التي تكون قيمة Unit_Price فيها أكبر من 400 وأقل من 600.
  • df[...].index: يستخرج فهارس الصفوف المطابقة للشرط.
  • drop(): يحذف هذه الصفوف من إطار البيانات.
  • inplace=True: يطبق الحذف مباشرة على df.

بعد حذف الصفوف المطابقة لهذا الشرط، سيكون الناتج كما يلي:

الفهرس product_name Unit_Price No_Of_Units Available_Quantity Available_Since_Date
1 Mouse 200.0 5 6 4/23/2021

هذا الأسلوب مثالي عندما تكون عملية التنظيف مرتبطة بمنطق العمل، وليس فقط بأرقام فهارس ثابتة.

أفضل ممارسات حذف الصفوف في Pandas

  • تحقق من الفهارس قبل تنفيذ الحذف، خاصة إذا كانت البيانات قد تعرضت لتصفية أو إعادة ترتيب.
  • استخدم inplace=True فقط عندما تكون متأكداً من أنك لا تحتاج إلى نسخة أصلية من البيانات.
  • في المشاريع التحليلية، يُفضل أحياناً إنشاء نسخة جديدة بدلاً من تعديل الكائن الأصلي لتسهيل التتبع والمراجعة.
  • عند استخدام الشروط، احرص على اختبار التعبير المنطقي أولاً بطباعة النتائج قبل الحذف النهائي.

الخلاصة التقنية

حذف الصفوف من Pandas DataFrame ليس مجرد عملية بسيطة، بل خطوة أساسية في تنظيف البيانات وتهيئتها للتحليل. يمكنك تنفيذ ذلك بمرونة كبيرة عبر الدالة drop()، سواء بحذف فهارس محددة، أو نطاقات متتابعة، أو صفوف تستوفي شروطاً معينة. ومن الناحية العملية، فإن اختيار الطريقة المناسبة يعتمد على شكل البيانات وهدفك من المعالجة. كلما كان منطق الحذف واضحاً ومنظماً، أصبحت مجموعة البيانات أكثر دقة وجاهزية للتحليل أو النمذجة.

اترك تعليقاً

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