Spec-Zone.ru › pandas 0.23

pandas.core.resample.Resampler.fillna

Resampler.fillna(method, limit=None) [source]

Заполнение пропущенных значений, возникших при увеличении частоты выборки.

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

Пропущенные значения, которые были в исходных данных, не будут изменены.

Параметры:

method : {‘pad’, ‘backfill’, ‘ffill’, ‘bfill’, ‘nearest’}

Метод заполнения пробелов в пересэмплированных данных

  • ‘pad’ или ‘ffill’: использование предыдущего действительного значения для заполнения пробела (вперед).
  • ‘backfill’ или ‘bfill’: использование следующего действительного значения для заполнения пробела.
  • ‘nearest’: использование ближайшего действительного значения для заполнения пробела.

limit : целое число, необязательно

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

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

Series или DataFrame

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

См. также

backfill
Заполнение пропущенных значений «назад» в пересэмплированных данных.
pad
Заполнение пропущенных значений «вперед» в пересэмплированных данных.
nearest
Заполнение пропущенных значений ближайшим соседом, начиная с центра.
interpolate
Заполнение пропущенных значений интерполяцией.
pandas.Series.fillna
Заполнение пропущенных значений в Series указанным методом, который может быть ‘bfill’ и ‘ffill’.
pandas.DataFrame.fillna
Заполнение пропущенных значений в DataFrame указанным методом, который может быть ‘bfill’ и ‘ffill’.

Ссылки

[R32] (1, 2) https://en.wikipedia.org/wiki/Imputation_(statistics)

Примеры

Пересэмплирование 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: 30T, 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: 30T, 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: 15T, 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: 30T, 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: 30T, 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: 30T, 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: 30T, 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: 30T, 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

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.core.resample.Resampler.fillna.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API