فحص الصفوف المكررة لا يبدأ بزر الحذف، بل بسؤال عن معنى الصف والأعمدة التي نقارنها. قد تتساوى قيم اللون والعدد في حدثين صحيحين مختلفين؛ وإذا قارننا هذين الحقلين وحدهما، فقد نخفي الفرق الذي سجله معرف الحدث ووقته.
الخلاصة السريعة
عرّف وحدة الصف، واختر أعمدة المقارنة، واعرض مجموعة التطابق للمراجعة قبل اتخاذ قرار حذف.
- تشابه اللون والعدد لا يثبت أن الحدثين نسخة واحدة؛ راجع معنى الصف والحقول التي تميزه.
- يقارن duplicated جميع الأعمدة افتراضيا، ويمكن قصر المقارنة على أعمدة محددة باستخدام subset. [1]
- keep=False يعلّم جميع الصفوف المتطابقة، بينما first يترك أول ظهور غير معلم؛ هذه علامات فحص وليست حذفا. [1]
- راجع مصدر المجموعة وسبب التكرار قبل اختيار ما يبقى؛ first وlast يصفان موضع الظهور، ولا يثبتان أن الباقي أصح أو أحدث.
ما الذي يمثله الصف في المثال؟
ننشئ جدولا افتراضيا لتسجيل أحداث تسليم ظروف ورقية. لكل حدث معرف ووقت وصول، ومعه لون الورق وعدده. يحمل ر17 ورقا أخضر عدده 5، ويحمل ر18 اللون والعدد نفسيهما، لكنهما حدثان منفصلان حسب تعريف المثال. نضيف صفا ثالثا أعيدت فيه قيم ر17 نفسها لتوضيح مقارنة نسخة صف.
إذا كانت وحدة المهمة حدث تسليم، فلا يصبح ر18 نسخة من ر17 لأنه يشبهه في حقلين. أما إذا كانت المهمة عد أنواع الطرود لا الأحداث، فسؤالها مختلف. نكتب وحدة الصف أولا حتى لا يحدد اختيار الأعمدة، عن غير قصد، الشيء الذي سنعده في بيانات النموذج.
كيف يغير اختيار الأعمدة مجموعة التطابق؟
تتيح DataFrame.duplicated تحديد أعمدة المقارنة بـ subset؛ وعند عدم تحديدها تنظر إلى جميع الأعمدة. [1]
في الجدول التوضيحي التالي، مقارنة اللون والعدد تجمع الصفوف الثلاثة في مجموعة واحدة. لكن مقارنة الحقول الأربعة تفصل ر18 عن صفّي ر17. ما تغير هو تعريف التطابق، ولم نكتشف بهذا التغيير واقعة جديدة أو هوية صحيحة في مخزن فعلي.
- أعمدة لا تخص معنى النسخة قد تمنع اكتشاف تشابه مطلوب للمراجعة.
- وحذف أعمدة تميز الوقائع قد يجمع أحداثا مختلفة؛ لذلك نكتب سبب اختيار كل عمود.
| معرف الحدث المفترض | وقت الوصول في المثال | لون الورق | العدد |
|---|---|---|---|
| ر17 | 12:03 | أخضر | 5 |
| ر18 | 12:11 | أخضر | 5 |
| ر17 | 12:03 | أخضر | 5 |
ماذا تعني علامة التكرار لكل ظهور؟
الافتراضي keep="first" يعلّم التكرارات عدا أول ظهور، وlast يترك آخر ظهور غير معلم، وFalse يعلّم جميعها. [1]
للمراجعة المقترحة، يفيد عرض جميع أعضاء المجموعة بدلا من عرض النسخة اللاحقة وحدها؛ نرى حينها ما الذي تتفق فيه الصفوف وما الذي يختلف. ولا نخلط استدعاء duplicated الذي يعطي علامات مع إجراء حذف. المثال هنا تفسير لقواعد موثقة على صفوف من إنشاء الكاتب؛ لم نشغّل دالة على ملف تسليم.
كيف ننتقل من التطابق إلى قرار معلل؟
نقترح مراجعة مصدر الصفين المتساويين: هل نسخت عملية الاستيراد صفا مرتين؟ أم توجد واقعتان مختلفتان لم تحفظ البيانات حقولا تميزهما؟ التطابق في الحقول المختارة لا يحسم السبب. ونراجع الصفوف قبل حذف معلومة قد تكون لازمة لسؤال المشروع.
إذا قررنا الاحتفاظ بأول ظهور أو آخره، نسجل ترتيب الملف ومعيار الاختيار. الموضع الأخير لا يثبت أن سجلّه أحدث زمنيا، ولا أن قيمه أدق؛ فقد يكون الملف مرتبا حسب اللون. نحفظ القيم الأصلية وسبب الإجراء المقترح، ونوضح أن انخفاض عدد الصفوف بعده لا يعني وحده أن مجموعة البيانات صارت أصح.
المصادر ومتابعة القراءة
- pandas: DataFrame.duplicated (يفتح في نافذة جديدة)pandas.pydata.org
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
