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