كيفية حذف الصفوف ذات قيم 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() هنا .

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *