Як видалити рядки зі значеннями 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() тут .