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.
См. также
Примечания
См. Операции с окнами для получения дополнительных сведений и примеров.
Примеры
>>> 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.DataFrame.rolling.html