pandas.DataFrame.rolling#
-
DataFrame.скользящее(window, min_periods=None, center=False, win_type=None, on=None, axis=
, closed=None, step=None, method='single')[источник]# Предоставляет скользящие оконные вычисления.
- Параметры:
- windowint, timedelta, str, offset или подкласс BaseIndexer
Размер скользящего окна.
Если целое число, фиксированное количество наблюдений, используемых для каждого окна.
Если указан timedelta, строка или смещение, это временной период каждого окна. Каждое окно будет иметь переменный размер на основе наблюдений, включённых в указанный временной период. Это допустимо только для индексов, подобных дате и времени. Чтобы узнать больше о смещениях и строковых частотах, см. эта ссылка.
Если подкласс BaseIndexer, границы окна основаны на определённом
get_window_boundsметод. Дополнительные аргументы ключевых слов для скользящего окна, а именноmin_periods,center,closedиstepбудет передан вget_window_bounds.- min_periodsint, по умолчанию None
Минимальное количество наблюдений в окне, необходимое для получения значения; в противном случае результат
np.nan.Для окна, заданного смещением,
min_periodsпо умолчанию будет равно 1.Для окна, которое задано целым числом,
min_periodsбудет по умолчанию равен размеру окна.- центрbool, по умолчанию False
Если False, установите метки окна как правый край индекса окна.
Если True, установить метки окна как центр индекса окна.
- win_typestr, по умолчанию None
Если
None, все точки имеют равный вес.Если строка, она должна быть допустимой оконная функция scipy.signal.
Некоторые типы окон Scipy требуют передачи дополнительных параметров в агрегационной функции. Дополнительные параметры должны соответствовать ключевым словам, указанным в сигнатуре метода типа окна Scipy.
- наstr, optional
Для DataFrame, метка столбца или уровень Index, по которому вычисляется скользящее окно, а не индекс DataFrame.
Предоставленный целочисленный столбец игнорируется и исключается из результата, поскольку целочисленный индекс не используется для расчета скользящего окна.
- осьint или str, по умолчанию 0
Если
0или'index', прокатка по строкам.Если
1или'columns', прокатка по столбцам.Для Series этот параметр не используется и по умолчанию равен 0.
Устарело с версии 2.1.0: Ключевое слово axis устарело. Для
axis=1, сначала транспонируйте DataFrame.- закрытstr, по умолчанию None
Если
'right', первая точка в окне исключается из расчетов.Если
'left', последняя точка в окне исключается из расчетов.Если
'both', точки вне окна исключаются из расчетов.Если
'neither', первая и последняя точки в окне исключаются из расчетов.По умолчанию
None('right').- шагint, по умолчанию None
Добавлено в версии 1.5.0.
Оценить окно на каждом
stepрезультат, эквивалентный срезу как[::step].windowдолжно быть целым числом. Использование аргумента шага, отличного от None или 1, приведет к результату с другой формой, чем у входных данных.- метод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.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
центр
Скользящая сумма с результатом, присвоенным центру индекса окна.
>>> 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
шаг
Скользящая сумма с длиной окна в 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
на
Скользящая сумма с длиной окна 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