Spec-Zone.ru › pandas 1

pandas.DataFrame.rolling

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None, step=None, method='single')[source]

Предоставление расчётов скользящего окна.

Параметры
window:int, смещение, или подкласс BaseIndexer

Размер скользящего окна.

Если целое число, то фиксированное число наблюдений, используемых для каждого окна.

Если смещение, то временной период каждого окна. Каждое окно будет иметь переменный размер, в зависимости от наблюдений, включенных в временной период. Это справедливо только для индексов datetimelike. Чтобы узнать больше о смещениях и строках частоты, пожалуйста, см. ссылку.

Если подкласс BaseIndexer, границы окна основаны на определенном get_window_bounds методе. Дополнительные ключевые аргументы rolling, а именно min_periods, center, closed и step будут переданы в get_window_bounds.

min_periods:int, по умолчанию None

Минимальное число наблюдений в окне, необходимое для получения значения; в противном случае результат np.nan.

Для окна, заданного смещением, min_periods по умолчанию равно 1.

Для окна, заданного целым числом, min_periods по умолчанию равно размеру окна.

center:bool, по умолчанию False

Если False, метки окна устанавливаются как правый край индекса окна.

Если True, метки окна устанавливаются как центр индекса окна.

win_type:str, по умолчанию None

Если None, все точки равномерно взвешены.

Если строка, она должна быть допустимой scipy.signal window function.

Некоторые типы окон Scipy требуют передачи дополнительных параметров в функцию агрегации. Дополнительные параметры должны соответствовать ключевым словам, указанным в сигнатуре метода типа окна Scipy.

on:str, необязательно

Для DataFrame, метка столбца или уровень индекса, по которому вычисляется скользящее окно, а не индекс DataFrame.

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

axis:int или str, по умолчанию 0

Если 0 или 'index', сдвиг по строкам.

Если 1 или 'columns', сдвиг по столбцам.

Для Series этот параметр не используется и по умолчанию равен 0.

closed:str, по умолчанию None

Если 'right', первая точка в окне исключается из вычислений.

Если 'left', последняя точка в окне исключается из вычислений.

Если 'both', никакие точки в окне не исключаются из вычислений.

Если 'neither', первая и последняя точки в окне исключаются из вычислений.

По умолчанию None ('right').

Изменено в версии 1.2.0: Теперь поддерживается параметр closed с фиксированными окнами.

step:int, по умолчанию None

..versionadded:: 1.5.0

Вычислять окно через каждые step результат, эквивалентно срезу как [::step]. window должен быть целым числом. Использование аргумента step отличного от None или 1, произведёт результат с другой формой, чем вход.

method:str {‘single’, ‘table’}, по умолчанию ‘single’

New in version 1.3.0.

Выполнить операцию rolling по одному столбцу или строке ('single') или по всему объекту ('table').

Этот аргумент реализован только при указании engine='numba' в вызове метода.

Возвращает
Window подкласс, если передается win_type
Rolling подкласс, если win_type не передаётся

См. также

expanding

Обеспечивает расширяющие преобразования.

ewm

Предоставляет экспоненциально взвешенные функции.

Примечания

См. Операции с окнами для получения дополнительной информации о порядке использования и примеров.

Примеры

>>> df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]})
>>> df
     B
0  0.0
1  1.0
2  2.0
3  NaN
4  4.0

window

Сумма скользящего окна с длиной окна в 2 наблюдения.

>>> df.rolling(2).sum()
     B
0  NaN
1  1.0
2  3.0
3  NaN
4  NaN

Сумма скользящего окна с длиной окна в 2 секунды.

>>> df_time = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]},
...                        index = [pd.Timestamp('20130101 09:00:00'),
...                                 pd.Timestamp('20130101 09:00:02'),
...                                 pd.Timestamp('20130101 09:00:03'),
...                                 pd.Timestamp('20130101 09:00:05'),
...                                 pd.Timestamp('20130101 09:00:06')])
>>> df_time
                       B
2013-01-01 09:00:00  0.0
2013-01-01 09:00:02  1.0
2013-01-01 09:00:03  2.0
2013-01-01 09:00:05  NaN
2013-01-01 09:00:06  4.0
>>> df_time.rolling('2s').sum()
                       B
2013-01-01 09:00:00  0.0
2013-01-01 09:00:02  1.0
2013-01-01 09:00:03  3.0
2013-01-01 09:00:05  NaN
2013-01-01 09:00:06  4.0

Сумма скользящего окна с направленными вперед окнами с 2 наблюдениями.

>>> indexer = pd.api.indexers.FixedForwardWindowIndexer(window_size=2)
>>> df.rolling(window=indexer, min_periods=1).sum()
     B
0  1.0
1  3.0
2  2.0
3  4.0
4  4.0

min_periods

Сумма скользящего окна с длиной окна в 2 наблюдения, но для вычисления значения требуется минимум 1 наблюдение.

>>> df.rolling(2, min_periods=1).sum()
     B
0  0.0
1  1.0
2  3.0
3  2.0
4  4.0

center

Сумма скользящего окна, результат присваивается центру индекса окна.

>>> df.rolling(3, min_periods=1, center=True).sum()
     B
0  1.0
1  3.0
2  3.0
3  6.0
4  4.0
>>> df.rolling(3, min_periods=1, center=False).sum()
     B
0  0.0
1  1.0
2  3.0
3  3.0
4  6.0

step

Сумма скользящего окна с длиной окна в 2 наблюдения, минимум 1 наблюдение для вычисления значения и шаг 2.

>>> df.rolling(2, min_periods=1, step=2).sum()
     B
0  0.0
2  3.0
4  4.0

win_type

Сумма скользящего окна с длиной окна в 2, используя тип окна Scipy 'gaussian'. std требуется в функции агрегации.

>>> df.rolling(2, win_type='gaussian').sum(std=3)
          B
0       NaN
1  0.986207
2  2.958621
3       NaN
4       NaN

© 2008–2022, 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/1.5.0/reference/api/pandas.DataFrame.rolling.html

Spec-Zone.ru

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