Spec-Zone.ru › pandas 2

pandas.DataFrame.rolling

DataFrame.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.

Выполнить операцию rolling по одному столбцу или строке ('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.DataFrame.rolling.html

Spec-Zone.ru

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