Spec-Zone.ru › pandas 2

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.

См. также

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

on

Сумма скользящего окна с длиной окна в 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

Spec-Zone.ru

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