كيفية حذف الصفوف ذات قيم nan في pandas
في كثير من الأحيان قد ترغب في إزالة الصفوف التي تحتوي على قيم NaN في pandas DataFrame. لحسن الحظ، من السهل القيام بذلك باستخدام الدالة pandas dropna() .
يوضح هذا البرنامج التعليمي عدة أمثلة لاستخدام هذه الوظيفة على DataFrame الباندا التالية:
import numpy as np import scipy.stats as stats #create DataFrame with some NaN values df = pd.DataFrame({'rating': [np.nan, 85, np.nan, 88, 94, 90, 76, 75, 87, 86], 'points': [np.nan, 25, 14, 16, 27, 20, 12, 15, 14, 19], 'assists': [5, 7, 7, np.nan, 5, 7, 6, 9, 9, 5], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]}) #view DataFrame df rating points assists rebounds 0 NaN NaN 5.0 11 1 85.0 25.0 7.0 8 2 NaN 14.0 7.0 10 3 88.0 16.0 NaN 6 4 94.0 27.0 5.0 6 5 90.0 20.0 7.0 9 6 76.0 12.0 6.0 6 7 75.0 15.0 9.0 10 8 87.0 14.0 9.0 10 9 86.0 19.0 5.0 7
مثال 1: حذف الصفوف التي تحتوي على قيم NaN
يمكننا استخدام بناء الجملة التالي لإزالة جميع الصفوف التي تحتوي على قيم NaN:
df. dropna ()
rating points assists rebounds
1 85.0 25.0 7.0 8
4 94.0 27.0 5.0 6
5 90.0 20.0 7.0 9
6 76.0 12.0 6.0 6
7 75.0 15.0 9.0 10
8 87.0 14.0 9.0 10
9 86.0 19.0 5.0 7
المثال 2: إزالة الصفوف التي تحتوي على كافة قيم NaN
يمكننا استخدام بناء الجملة التالي لإزالة جميع الصفوف التي تحتوي على جميع قيم NaN في كل عمود:
df. dropna (how=' all ') rating points assists rebounds 0 NaN NaN 5.0 11 1 85.0 25.0 7.0 8 2 NaN 14.0 7.0 10 3 88.0 16.0 NaN 6 4 94.0 27.0 5.0 6 5 90.0 20.0 7.0 9 6 76.0 12.0 6.0 6 7 75.0 15.0 9.0 10 8 87.0 14.0 9.0 10 9 86.0 19.0 5.0 7
لم تكن هناك صفوف تحتوي على جميع قيم NaN في DataFrame المحدد، لذلك لم يتم حذف أي من الصفوف.
المثال 3: حذف الصفوف التي تقل عن حد معين
يمكننا استخدام بناء الجملة التالي لإزالة كافة الصفوف التي لا تحتوي على عدد معين على الأقل من القيم غير NaN:
df. dropna (thresh= 3 ) rating points assists rebounds 1 85.0 25.0 7.0 8 2 NaN 14.0 7.0 10 3 88.0 16.0 NaN 6 4 94.0 27.0 5.0 6 5 90.0 20.0 7.0 9 6 76.0 12.0 6.0 6 7 75.0 15.0 9.0 10 8 87.0 14.0 9.0 10 9 86.0 19.0 5.0 7
لم يحتوي الصف الأول من DataFrame الأصلي على 3 قيم غير NaN على الأقل، لذلك كان هذا هو الصف الوحيد الذي تمت إزالته.
مثال 4: حذف صف يحتوي على قيم Nan في عمود محدد
يمكننا استخدام بناء الجملة التالي لإزالة جميع الصفوف التي تحتوي على قيمة NaN في عمود معين:
df. dropna (subset=[' assists ']) rating points assists rebounds 0 NaN NaN 5.0 11 1 85.0 25.0 7.0 8 2 NaN 14.0 7.0 10 4 94.0 27.0 5.0 6 5 90.0 20.0 7.0 9 6 76.0 12.0 6.0 6 7 75.0 15.0 9.0 10 8 87.0 14.0 9.0 10 9 86.0 19.0 5.0 7
مثال 5: إعادة تعيين الفهرس بعد حذف الصفوف التي تحتوي على NaNs
يمكننا استخدام بناء الجملة التالي لإعادة تعيين فهرس DataFrame بعد حذف الصفوف ذات قيم NaN:
#drop all rows that have any NaN values df = df. dropna () #reset index of DataFrame df = df. reset_index (drop=True) #view DataFrame df rating points assists rebounds 0 85.0 25.0 7.0 8 1 94.0 27.0 5.0 6 2 90.0 20.0 7.0 9 3 76.0 12.0 6.0 6 4 75.0 15.0 9.0 10 5 87.0 14.0 9.0 10 6 86.0 19.0 5.0 77
يمكنك العثور على الوثائق الكاملة لوظيفة dropna() هنا .