Метод dropna
Метод dropna применяется к DataFrame
и удаляет строки (или столбцы), содержащие пропущенные значения.
По умолчанию удаляются все строки, в которых есть хотя бы одно
значение NaN. Метод возвращает новый объект или изменяет
исходный в зависимости от параметра inplace.
Синтаксис
df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
Основные параметры
Рассмотрим основные параметры метода dropna:
-
axis- определяет, по какой оси удалять:0(строки) или1(столбцы) -
how- определяет условие удаления:'any'(удалять, если есть хотя бы одинNaN) или'all'(удалять, если все значенияNaN) -
thresh- минимальное количество не-NaNзначений, которое должно оставаться в строке/столбце -
subset- список столбцов для проверки наNaN -
inplace- еслиTrue, изменяет исходныйDataFrameи возвращаетNone
Пример
Создадим таблицу с пропущенными значениями и удалим все строки,
содержащие хотя бы один NaN:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 2, np.nan, 4, 5],
'b': [10, np.nan, 30, 40, 50],
'c': [100, 200, 300, np.nan, 500]
})
res = df.dropna()
print(res)
Результат выполнения кода:
a b c
0 1.0 10.0 100.0
4 5.0 50.0 500.0
Пример
Удалим столбцы, в которых все значения являются пропущенными.
Для этого используем параметр axis со значением 1
и параметр how со значением 'all':
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [np.nan, np.nan, np.nan, np.nan, np.nan],
'c': [10, 20, 30, 40, 50]
})
res = df.dropna(axis=1, how='all')
print(res)
Результат выполнения кода:
a c
0 1 10
1 2 20
2 3 30
3 4 40
4 5 50
Пример
Оставим строки, содержащие минимум два не-пропущенных значения.
Для этого используем параметр thresh со значением 2:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, np.nan, 3, np.nan, 5],
'b': [10, np.nan, 30, 40, np.nan],
'c': [100, 200, np.nan, 400, 500]
})
res = df.dropna(thresh=2)
print(res)
Результат выполнения кода:
a b c
0 1.0 10.0 100.0
2 3.0 30.0 NaN
3 NaN 40.0 400.0
Пример
Проверим наличие пропущенных значений только в определенных
столбцах с помощью параметра subset:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 2, np.nan, 4, 5],
'b': [10, 20, 30, 40, np.nan],
'c': [100, 200, 300, 400, 500]
})
res = df.dropna(subset=['a', 'b'])
print(res)
Результат выполнения кода:
a b c
0 1.0 10.0 100.0
1 2.0 20.0 200.0
3 4.0 40.0 400.0
Пример
Изменим исходный DataFrame, не создавая новый объект.
Для этого используем параметр inplace со значением True:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, np.nan, 3, 4, 5],
'b': [10, 20, np.nan, 40, 50],
'c': [100, 200, 300, np.nan, 500]
})
df.dropna(inplace=True)
print(df)
Результат выполнения кода:
a b c
0 1.0 10.0 100.0
4 5.0 50.0 500.0