pandas.Series.rolling
- Series.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=<no_default>, closed=None, step=None, method='single')[исходный код]
-
Выполняет вычисления с использованием скользящего окна.
- Параметры:
-
- window:int, timedelta, str, offset, or BaseIndexer subclass
-
Размер скользящего окна.
Если задано целое число, то оно определяет фиксированное количество наблюдений, используемых для каждого окна.
Если задано значение timedelta, строка или смещение, то оно определяет временной интервал для каждого окна. Размер окна будет переменным и будет зависеть от наблюдений, попавших в этот временной интервал. Это допустимо только для индексов с типом даты и времени. Подробнее о смещениях и строках частоты см. по этой ссылке.
Если задан подкласс BaseIndexer, границы окна определяются методом
get_window_bounds. Дополнительные ключевые аргументы для скользящего окна, а именноmin_periods,center,closedиstep, будут переданы вget_window_bounds. - min_periods:int, default None
-
Минимальное количество наблюдений в окне, необходимое для получения значения; в противном случае результатом будет
np.nan.Для окна, заданного смещением, по умолчанию
min_periodsравно 1.Для окна, заданного целым числом, по умолчанию
min_periodsравно размеру окна. - center:bool, default False
-
Если False, метки окна располагаются на правой границе индекса окна.
Если True, метки окна располагаются в центре индекса окна.
- win_type:str, default None
-
Если задано
None, все точки имеют одинаковый вес.Если задана строка, она должна обозначать допустимую оконную функцию scipy.signal.
Для некоторых типов окон Scipy необходимо передавать дополнительные параметры в функцию агрегации. Дополнительные параметры должны соответствовать ключевым словам, указанным в сигнатуре метода типа окна Scipy.
- on:str, optional
-
Для DataFrame — метка столбца или уровень Index, по которому вычисляется скользящее окно вместо индекса DataFrame.
Указанный целочисленный столбец игнорируется и исключается из результата, поскольку целочисленный индекс не используется для вычисления скользящего окна.
- axis:int or str, default 0
-
Если задано
0или'index', скользящее окно применяется вдоль строк.Если задано
1или'columns', скользящее окно применяется вдоль столбцов.Для Series этот параметр не используется и по умолчанию равен 0.
Устарело с версии 2.1.0: Ключевое слово axis устарело. Для
axis=1вместо этого сначала транспонируйте DataFrame. - closed:str, default None
-
Если задано
'right', первая точка в окне исключается из вычислений.Если задано
'left', последняя точка в окне исключается из вычислений.Если задано
'both', ни одна точка в окне не исключается из вычислений.Если задано
'neither', первая и последняя точки в окне исключаются из вычислений.По умолчанию
None('right'). - step:int, default None
-
Добавлено в версии 1.5.0.
Вычисляет окно для каждого
stepрезультата, что эквивалентно срезу[::step].windowдолжно быть целым числом. Использование аргумента step, отличного от None или 1, приводит к тому, что форма результата отличается от формы входных данных. - method:str {‘single’, ‘table’}, default ‘single’
-
Добавлено в версии 1.3.0.
Выполняет операцию скользящего окна отдельно для каждого столбца или строки (
'single') либо для всего объекта ('table').Этот аргумент реализован только при указании
engine='numba'в вызове метода.
- Возвращает:
-
- pandas.api.typing.Window or pandas.api.typing.Rolling
-
Если передано
win_type, возвращается экземпляр Window. В противном случае возвращается экземпляр Rolling.
См. также
Примечания
Дополнительные сведения об использовании и примеры см. в разделе Операции с окнами.
Примеры
>>> 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 NaNon
Скользящая сумма для окна длительностью 2 дня.
>>> df = pd.DataFrame({ ... 'A': [pd.to_datetime('2020-01-01'), ... pd.to_datetime('2020-01-01'), ... pd.to_datetime('2020-01-02'),], ... 'B': [1, 2, 3], }, ... index=pd.date_range('2020', periods=3))>>> df A B 2020-01-01 2020-01-01 1 2020-01-02 2020-01-01 2 2020-01-03 2020-01-02 3>>> df.rolling('2D', on='A').sum() A B 2020-01-01 2020-01-01 1.0 2020-01-02 2020-01-01 3.0 2020-01-03 2020-01-02 6.0
© 2008–2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
© 2011–2025, Open source contributors
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.3.0/reference/api/pandas.Series.rolling.html