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.