pandas.core.resample.Resampler.fillna#

окончательный Resampler.fillna(метод, limit=None)[источник]#

Заполнить пропущенные значения, введенные апсемплингом.

В статистике импутация — это процесс замены отсутствующих данных замещающими значениями [1]. При передискретизации данных могут появляться пропущенные значения (например, когда частота передискретизации выше исходной частоты).

Ссылки могут быть извлечены из ячеек вместе с текстом с помощью

Параметры:
метод{‘pad’, ‘backfill’, ‘ffill’, ‘bfill’, ‘nearest’}

Метод для заполнения пропусков в передискретизированных данных

  • 'pad' или 'ffill': использовать предыдущее допустимое наблюдение для заполнения пропуска (заполнение вперед).

  • 'backfill' или 'bfill': используйте следующее допустимое наблюдение для заполнения пробела.

  • ‘nearest’: использовать ближайшее допустимое наблюдение для заполнения пропуска.

limitint, необязательный

Лимит количества последовательных пропущенных значений для заполнения.

Возвращает:
Series или DataFrame

Апсемплированный Series или DataFrame с заполненными пропущенными значениями.

Смотрите также

bfill

Обратное заполнение значений NaN в передискретизированных данных.

ffill

Заполнение NaN значений вперед в передискретизированных данных.

nearest

Заполните значения NaN в передискретизированных данных ближайшим соседом, начиная с центра.

interpolate

Заполните значения NaN с помощью интерполяции.

Series.fillna

Заполните значения NaN в Series с помощью указанного метода, который может быть 'bfill' и 'ffill'.

DataFrame.fillna

Заполнить значения NaN в DataFrame с использованием указанного метода, который может быть 'bfill' и 'ffill'.

Ссылки

Примеры

Ресемплинг Series:

>>> s = pd.Series([1, 2, 3],
...               index=pd.date_range('20180101', periods=3, freq='h'))
>>> s
2018-01-01 00:00:00    1
2018-01-01 01:00:00    2
2018-01-01 02:00:00    3
Freq: h, dtype: int64

Без заполнения пропущенных значений вы получите:

>>> s.resample("30min").asfreq()
2018-01-01 00:00:00    1.0
2018-01-01 00:30:00    NaN
2018-01-01 01:00:00    2.0
2018-01-01 01:30:00    NaN
2018-01-01 02:00:00    3.0
Freq: 30min, dtype: float64
>>> s.resample('30min').fillna("backfill")
2018-01-01 00:00:00    1
2018-01-01 00:30:00    2
2018-01-01 01:00:00    2
2018-01-01 01:30:00    3
2018-01-01 02:00:00    3
Freq: 30min, dtype: int64
>>> s.resample('15min').fillna("backfill", limit=2)
2018-01-01 00:00:00    1.0
2018-01-01 00:15:00    NaN
2018-01-01 00:30:00    2.0
2018-01-01 00:45:00    2.0
2018-01-01 01:00:00    2.0
2018-01-01 01:15:00    NaN
2018-01-01 01:30:00    3.0
2018-01-01 01:45:00    3.0
2018-01-01 02:00:00    3.0
Freq: 15min, dtype: float64
>>> s.resample('30min').fillna("pad")
2018-01-01 00:00:00    1
2018-01-01 00:30:00    1
2018-01-01 01:00:00    2
2018-01-01 01:30:00    2
2018-01-01 02:00:00    3
Freq: 30min, dtype: int64
>>> s.resample('30min').fillna("nearest")
2018-01-01 00:00:00    1
2018-01-01 00:30:00    2
2018-01-01 01:00:00    2
2018-01-01 01:30:00    3
2018-01-01 02:00:00    3
Freq: 30min, dtype: int64

Пропущенные значения, присутствующие до повышающей дискретизации, не затрагиваются.

>>> sm = pd.Series([1, None, 3],
...                index=pd.date_range('20180101', periods=3, freq='h'))
>>> sm
2018-01-01 00:00:00    1.0
2018-01-01 01:00:00    NaN
2018-01-01 02:00:00    3.0
Freq: h, dtype: float64
>>> sm.resample('30min').fillna('backfill')
2018-01-01 00:00:00    1.0
2018-01-01 00:30:00    NaN
2018-01-01 01:00:00    NaN
2018-01-01 01:30:00    3.0
2018-01-01 02:00:00    3.0
Freq: 30min, dtype: float64
>>> sm.resample('30min').fillna('pad')
2018-01-01 00:00:00    1.0
2018-01-01 00:30:00    1.0
2018-01-01 01:00:00    NaN
2018-01-01 01:30:00    NaN
2018-01-01 02:00:00    3.0
Freq: 30min, dtype: float64
>>> sm.resample('30min').fillna('nearest')
2018-01-01 00:00:00    1.0
2018-01-01 00:30:00    NaN
2018-01-01 01:00:00    NaN
2018-01-01 01:30:00    3.0
2018-01-01 02:00:00    3.0
Freq: 30min, dtype: float64

Передискретизация DataFrame выполняется по столбцам. Доступны все те же опции.

>>> df = pd.DataFrame({'a': [2, np.nan, 6], 'b': [1, 3, 5]},
...                   index=pd.date_range('20180101', periods=3,
...                                       freq='h'))
>>> df
                       a  b
2018-01-01 00:00:00  2.0  1
2018-01-01 01:00:00  NaN  3
2018-01-01 02:00:00  6.0  5
>>> df.resample('30min').fillna("bfill")
                       a  b
2018-01-01 00:00:00  2.0  1
2018-01-01 00:30:00  NaN  3
2018-01-01 01:00:00  NaN  3
2018-01-01 01:30:00  6.0  5
2018-01-01 02:00:00  6.0  5