DataFrame.fillna() / Series.fillna()

Метод fillna() заменяет пропущенные значения (NaN, NaT, None) на указанное значение или значения, вычисленные по соседним элементам. Один из основных инструментов очистки данных.

Сигнатура

DataFrame.fillna(value=None, *, method=None, axis=None,
                 inplace=False, limit=None, downcast=None)

Параметры

  • value — скаляр, словарь, Series или DataFrame. Значение(я) для подстановки.

  • method — устаревший параметр (используйте ffill()/bfill()): 'ffill', 'bfill'.

  • axis — 0 (по строкам) или 1 (по столбцам).

  • inplace — изменить объект на месте (по умолчанию False).

  • limit — максимум подряд идущих NaN для заполнения.

Возвращаемое значение

DataFrame или Series того же размера с заполненными пропусками. При inplace=True возвращает None.

Примеры

Пример 1. Заполнение константой

import pandas as pd
import numpy as np

s = pd.Series([1.0, np.nan, 3.0, np.nan, 5.0])
print(s.fillna(0))
0    1.0
1    0.0
2    3.0
3    0.0
4    5.0
dtype: float64

Пример 2. Разные значения для разных столбцов

Показания датчиков Arduino: пропуски заменяем средним по каждому типу.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "temp":     [22.1, np.nan, 23.0, np.nan],
    "humidity": [55, 60, np.nan, 58],
})
print(df.fillna({"temp": 22.5, "humidity": 57}))
   temp  humidity
0  22.1      55.0
1  22.5      60.0
2  23.0      57.0
3  22.5      58.0

Пример 3. Заполнение средним по столбцу

import pandas as pd
import numpy as np

df = pd.DataFrame({"v": [10.0, np.nan, 20.0, np.nan, 30.0]})
print(df.fillna(df.mean()))
      v
0  10.0
1  20.0
2  20.0
3  20.0
4  30.0

Пример 4. Forward fill (предыдущее значение)

import pandas as pd
import numpy as np

s = pd.Series([1, np.nan, np.nan, 4, np.nan])
print(s.ffill())
0    1.0
1    1.0
2    1.0
3    4.0
4    4.0
dtype: float64

Пример 5. Ограничение количества заполнений

import pandas as pd
import numpy as np

s = pd.Series([1, np.nan, np.nan, np.nan, 5])
print(s.fillna(0, limit=2))
0    1.0
1    0.0
2    0.0
3    NaN
4    5.0
dtype: float64

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.