DataFrame.rolling() / Series.rolling()

Метод rolling() создаёт объект скользящего окна для последующей агрегации (среднее, сумма, max). Незаменим для сглаживания зашумлённых данных с датчиков.

Сигнатура

DataFrame.rolling(window, min_periods=None, center=False, win_type=None,
                  on=None, axis=0, closed=None, step=None, method="single")

Параметры

  • window — размер окна (int) или временной период ("5min").

  • min_periods — минимум наблюдений в окне, иначе NaN.

  • center — центрировать окно вокруг точки.

  • win_type — тип взвешивающего окна ("triang", "hamming").

Возвращаемое значение

Объект Rolling — нужен метод-агрегатор.

Примеры

Пример 1. Скользящее среднее (фильтр шума)

import pandas as pd

raw = pd.Series([22, 25, 22, 23, 22, 28, 22, 22])
print(raw.rolling(window=3).mean())
0          NaN
1          NaN
2    23.000000
3    23.333333
4    22.333333
5    24.333333
6    24.000000
7    24.000000
dtype: float64

Пример 2. min_periods=1 — без NaN в начале

import pandas as pd

s = pd.Series([10, 20, 30, 40])
print(s.rolling(window=3, min_periods=1).mean())
0    10.0
1    15.0
2    20.0
3    30.0
dtype: float64

Пример 3. Скользящая сумма

import pandas as pd

s = pd.Series([1, 2, 3, 4, 5])
print(s.rolling(window=2).sum())
0    NaN
1    3.0
2    5.0
3    7.0
4    9.0
dtype: float64

Пример 4. По времени

import pandas as pd

idx = pd.date_range("2026-01-01", periods=5, freq="1min")
s = pd.Series([10, 20, 30, 40, 50], index=idx)
print(s.rolling("2min").mean())
2026-01-01 00:00:00    10.0
2026-01-01 00:01:00    15.0
2026-01-01 00:02:00    25.0
2026-01-01 00:03:00    35.0
2026-01-01 00:04:00    45.0
Freq: 1min, dtype: float64

Пример 5. Максимум по окну (поиск пиков)

import pandas as pd

s = pd.Series([1, 5, 3, 8, 2, 9, 4])
print(s.rolling(window=3, center=True).max())
0    NaN
1    5.0
2    8.0
3    8.0
4    9.0
5    9.0
6    NaN
dtype: float64

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.