Як видалити рядки зі значеннями nan в pandas


Часто ви можете видалити рядки, що містять значення NaN, у pandas DataFrame. На щастя, це легко зробити за допомогою функції pandas dropna() .

Цей підручник показує кілька прикладів використання цієї функції на таких pandas 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

У цьому конкретному DataFrame не було рядків із усіма значеннями NaN, тому жоден із рядків не було видалено.

Приклад 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: скидання індексу після видалення рядків із NaN

Ми можемо використати такий синтаксис, щоб скинути індекс 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() тут .

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *