Как удалить строки со значениями nan в pandas


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

В этом руководстве показано несколько примеров использования этой функции в следующем DataFrame pandas:

 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 не содержала как минимум трех значений, отличных от 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() вы можете найти здесь .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *