في هذا المقال سوف نستعرض طريقة التعامل مع البيانات المتكررة باستخدام لغة البرمجة بايثون. في البداية سوف نستخدم البيانات، ثم نستخدام الكود التالي لتحديد دليل العمل (working directory):
In: import os os.chdir('*****')
ثم نقوم باستيراد البيانات كما يلي:
In: import pandas as pd mydata = pd.read_csv('mydata.csv') print(mydata) Out: name age city 0 Ali 20 Riyadh 1 Mohammed 30 Jeddah 2 Ahmed 33 Alkhobar 3 Ali 20 Riyadh 4 Bander 43 Dammam 5 Ali 20 Riyadh 6 Mohammed 30 Jeddah 7 Abdullah 38 Riyadh 8 Khaled 30 Jeddah
لتوضيح التكرار في البيانات نقوم بفرز (sort) البيانات كما يلي:
In: mydata=mydata.sort_values(by=['name','age','city']) print(mydata) Out: name age city 7 Abdullah 38 Riyadh 2 Ahmed 33 Alkhobar 0 Ali 20 Riyadh 3 Ali 20 Riyadh 5 Ali 20 Riyadh 4 Bander 43 Dammam 8 Khaled 30 Jeddah 1 Mohammed 30 Jeddah 6 Mohammed 30 Jeddah
وبعد ذلك يمكن حذف البيانات المتكررة باستخدم الدالة التالية:
df.drop_duplicates(subset, keep, inplace, ignore_index)
حيث أن:
df | إطار بيانات (data frame). |
subset | أسم عمود او مجموعة أعمدة. |
keep | first: لإبقاء إول صف من البيانات المتكررة (الافتراضي)، last: لإبقاء آخر صف منها، False: لحذف جميع الصفوف المتكررة. |
inplace | False: حذف الصفوف المتكررة في نسخة جديدة من البيانات (الافتراضي)، True: حذف الصفوف المتكررة من البيانات الحالية. |
ignore_index | False: ابقاء ترتيب الفهرس (الافتراضي)، True: إعادة الفهرسة بعد الحذف. |
وذلك كما في الأمثلة التالية:
1. حذف الصفوف المتكررة مع إبقاء أول صف منها:
In: newdata=mydata.drop_duplicates() print(newdata) Out: name age city 7 Abdullah 38 Riyadh 2 Ahmed 33 Alkhobar 0 Ali 20 Riyadh 4 Bander 43 Dammam 8 Khaled 30 Jeddah 1 Mohammed 30 Jeddah
2. حذف الصفوف المتكررة وإبقاء أخر صف منها
In: newdata=mydata.drop_duplicates(subset=['name'],keep='last') print(newdata) Out: name age city 7 Abdullah 38 Riyadh 2 Ahmed 33 Alkhobar 5 Ali 20 Riyadh 4 Bander 43 Dammam 8 Khaled 30 Jeddah 6 Mohammed 30 Jeddah
3. حذف الصفوف المتكررة جميعها
In: newdata=mydata.drop_duplicates(keep=False) print(newdata) Out: name age city 7 Abdullah 38 Riyadh 2 Ahmed 33 Alkhobar 4 Bander 43 Dammam 8 Khaled 30 Jeddah
4. حذف الصفوف المتكررة وفقاً لعمود معين أو أكثر
In: newdata=mydata.drop_duplicates(subset=['name'],keep=False) print(newdata) Out: name age city 7 Abdullah 38 Riyadh 2 Ahmed 33 Alkhobar 4 Bander 43 Dammam 8 Khaled 30 Jeddah
شرح جدا ممتاز وفقك الله