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не передаётся
-
См. также
Примечания
См. Операции с окнами для получения дополнительной информации о порядке использования и примеров.
Примеры
>>> 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.0window
Сумма скользящего окна с длиной окна в 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.0min_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.0center
Сумма скользящего окна, результат присваивается центру индекса окна.
>>> 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.0step
Сумма скользящего окна с длиной окна в 2 наблюдения, минимум 1 наблюдение для вычисления значения и шаг 2.
>>> df.rolling(2, min_periods=1, step=2).sum() B 0 0.0 2 3.0 4 4.0win_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