Метод fillna
Метод fillna применяется к Series
и позволяет заменить пропущенные значения (NaN) на
указанные значения или значения, вычисленные на основе
других данных. Основным параметром является значение,
которым будут заполнены пропуски. Также можно
использовать параметр method для заполнения
вперёд (ffill) или назад (bfill), параметр limit
для ограничения количества заполнений, и параметр
inplace для изменения исходного объекта.
Синтаксис
ser.fillna(value, method=None, axis=None, inplace=False, limit=None, downcast=None)
Пример
Давайте создадим серию с пропущенными значениями
и заполним их числом 0:
import pandas as pd
import numpy as np
ser = pd.Series([1, np.nan, 3, np.nan, 5])
res = ser.fillna(0)
print(res)
Результат выполнения кода:
0 1.0
1 0.0
2 3.0
3 0.0
4 5.0
dtype: float64
Пример
Теперь заполним пропуски средним значением всех элементов серии:
import pandas as pd
import numpy as np
ser = pd.Series([1, np.nan, 3, 4, np.nan])
mean_val = ser.mean()
res = ser.fillna(mean_val)
print(res)
Результат выполнения кода:
0 1.000000
1 2.666667
2 3.000000
3 4.000000
4 2.666667
dtype: float64
Пример
Заполним пропуски с использованием метода заполнения вперёд (forward fill):
import pandas as pd
import numpy as np
ser = pd.Series([1, np.nan, np.nan, 4, 5])
res = ser.fillna(method='ffill')
print(res)
Результат выполнения кода:
0 1.0
1 1.0
2 1.0
3 4.0
4 5.0
dtype: float64
Пример
Заполним пропуски с использованием метода
заполнения назад (backward fill) и ограничим
количество заполнений параметром limit:
import pandas as pd
import numpy as np
ser = pd.Series([1, np.nan, np.nan, 4, np.nan])
res = ser.fillna(method='bfill', limit=1)
print(res)
Результат выполнения кода:
0 1.0
1 4.0
2 NaN
3 4.0
4 NaN
dtype: float64
Пример
Используем параметр inplace для изменения
исходной серии без создания новой:
import pandas as pd
import numpy as np
ser = pd.Series([1, np.nan, 3, np.nan, 5])
ser.fillna(0, inplace=True)
print(ser)
Результат выполнения кода:
0 1.0
1 0.0
2 3.0
3 0.0
4 5.0
dtype: float64
Пример
Заполним пропуски словарём, где ключом является индекс элемента, а значением - значение для заполнения:
import pandas as pd
import numpy as np
ser = pd.Series([1, np.nan, 3, np.nan, 5])
fill_dict = {1: 99, 3: 100}
res = ser.fillna(fill_dict)
print(res)
Результат выполнения кода:
0 1.0
1 99.0
2 3.0
3 100.0
4 5.0
dtype: float64