pandas.Series.rolling
- Series.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=_NoDefault.no_default, closed=None, step=None, method='single')[source]
-
Предоставление расчётов скользящего окна.
- Параметры:
-
- window:int, timedelta, str, offset, или подкласс BaseIndexer
-
Размер скользящего окна.
Если целое число, фиксированное количество наблюдений, используемых для каждого окна.
Если timedelta, str или offset, временной период каждого окна. Каждое окно будет иметь переменный размер, основанный на наблюдениях, включённых во временной период. Это допустимо только для 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.
Некоторые типы окон Scipy требуют передачи дополнительных параметров в функцию агрегации. Дополнительные параметры должны соответствовать ключевым словам, указанным в сигнатуре метода типа окна Scipy.
- on:str, необязательно
-
Для DataFrame, метка столбца или уровень индекса, по которому вычисляется скользящее окно, а не индекс DataFrame.
Предоставленный целочисленный столбец игнорируется и исключается из результата, так как целочисленный индекс не используется для вычисления скользящего окна.
- axis:int или str, по умолчанию 0
-
Если
0или'index', сдвиг происходит по строкам.Если
1или'columns', сдвиг происходит по столбцам.Для Series этот параметр не используется и по умолчанию равен 0.
Устарело начиная с версии 2.1.0: Параметр axis устарел. Для
axis=1, сначала транспонируйте DataFrame. - closed:str, по умолчанию None
-
Если
'right', первая точка в окне исключается из расчётов.Если
'left', последняя точка в окне исключается из расчётов.Если
'both', никакие точки в окне не исключаются из расчётов.Если
'neither', первая и последняя точки в окне исключаются из расчётов.Значение по умолчанию
None('right'). - step:int, по умолчанию None
-
Введено в версии 1.5.0.
Выполните операцию окна через каждые
stepрезультат, эквивалентно срезу как[::step].windowдолжен быть целым числом. Использование аргумента step, отличного от None или 1, даст результат с другой формой, чем входные данные. - method:str {‘single’, ‘table’}, по умолчанию ‘single’
-
Введено в версии 1.3.0.
Выполните операцию скользящего окна для каждого столбца или строки (
'single') или для всего объекта ('table').Этот аргумент реализован только при указании
engine='numba'в вызове метода.
- Возвращает:
-
- pandas.api.typing.Window или pandas.api.typing.Rolling
-
Объект Window возвращается, если
win_typeпередаётся. В противном случае возвращается объект 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–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/2.2.2/reference/api/pandas.Series.rolling.html