pandas.DataFrame.rolling
-
DataFrame.rolling(window, min_periods=None, freq=None, center=False, win_type=None, on=None, axis=0, closed=None)[source] -
Предоставляет вычисления скользящего окна.
Добавлена в версии 0.18.0.
Параметры: window : int или смещение
Размер скользящего окна. Это количество наблюдений, используемых для расчёта статистики. Каждое окно будет фиксированного размера.
Если это смещение, то это временной период каждого окна. Каждое окно будет иметь переменный размер, в зависимости от наблюдений, включённых во временной период. Это действует только для индексов datetimelike. Это нововведение с версии 0.19.0
min_periods : int, по умолчанию None
Минимальное количество наблюдений в окне, необходимое для получения значения (в противном случае результат — NaN). Для окна, определённого смещением, по умолчанию это 1.
freq : строка или объект DateOffset, необязательно (по умолчанию None) (УСТАРЕЛО)
Частота для приведения данных к виду перед вычислением статистики. Указывается как строка частоты или объект DateOffset.
center : boolean, по умолчанию False
Установить метки в центре окна.
win_type : строка, по умолчанию None
Укажите тип окна. См. примечания ниже.
on : строка, необязательно
Для DataFrame, столбец, по которому рассчитывать скользящее окно, а не индекс
closed : строка, по умолчанию None
Сделать интервал закрытым по правой, левой, обеим или ни одной границам. Для окон, основанных на смещениях, по умолчанию «правая». Для фиксированных окон по умолчанию «обе». Остальные случаи не реализованы для фиксированных окон.
Добавлена в версии 0.20.0.
axis : int или строка, по умолчанию 0
Возвращает: объект Window или Rolling, подклассы для конкретной операции
Примечания
По умолчанию результат устанавливается в правой части окна. Это можно изменить на центр окна, установив
center=TrueКлючевое слово
freqиспользуется для приведения временных рядов к заданной частоте путём ресемплирования данных. Это выполняется с параметрами по умолчаниюresample()(т.е. с использованиемmean).Дополнительную информацию о смещениях и строках частоты см. в этой ссылке.
Распознаваемые типы окон:
boxcartriangblackmanhammingbartlettparzenbohmanblackmanharrisnuttallbarthann-
kaiser(необходимо бета) -
gaussian(необходимо стандарт) -
general_gaussian(необходимо мощность, ширина) -
slepian(необходимо ширина).
Примеры
>>> 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Сумма скользящего окна длиной 2, с использованием типа окна 'triang'.
>>> df.rolling(2, win_type='triang').sum() B 0 NaN 1 1.0 2 2.5 3 NaN 4 NaNСумма скользящего окна длиной 2, min_periods по умолчанию равно длине окна.
>>> df.rolling(2).sum() B 0 NaN 1 1.0 2 3.0 3 NaN 4 NaNТо же самое, что выше, но явно задано min_periods
>>> df.rolling(2, min_periods=1).sum() B 0 0.0 1 1.0 2 3.0 3 2.0 4 4.0Нерегулярный (не имеющий регулярной частоты), индексированный по времени DataFrame
>>> df = 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 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В отличие от целого скользящего окна, это скроллит окно переменной длины, соответствующей временной период. По умолчанию min_periods равно 1.
>>> df.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
© 2008–2012, 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/0.20.3/generated/pandas.DataFrame.rolling.html