DataFrame.resample()

Метод resample() группирует данные временного ряда по новой частоте: down-sampling (укрупнение, например, секунды → минуты) или up-sampling (детализация). Требует, чтобы индекс был DatetimeIndex / TimedeltaIndex / PeriodIndex.

Сигнатура

DataFrame.resample(rule, axis=0, closed=None, label=None,
                   convention="start", kind=None, on=None,
                   level=None, origin="start_day", offset=None)

Параметры

  • rule — частота: "S"/"s" (секунда), "min" (минута), "H"/"h" (час), "D" (день), "W", "ME" (месяц).

  • on — столбец с датами, если он не индекс.

  • label — какая граница идёт в метку: "left" или "right".

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

Объект Resampler — нужен метод-агрегатор (mean, sum, first, ohlc).

Примеры

Пример 1. Среднее по минутам

import pandas as pd

idx = pd.date_range("2026-01-01", periods=6, freq="30s")
s = pd.Series([22.0, 22.2, 22.4, 23.0, 23.2, 23.4], index=idx)
print(s.resample("1min").mean())
2026-01-01 00:00:00    22.1
2026-01-01 00:01:00    22.7
2026-01-01 00:02:00    23.3
Freq: 1min, dtype: float64

Пример 2. Сумма по дню

import pandas as pd

idx = pd.date_range("2026-01-01", periods=4, freq="6h")
s = pd.Series([5, 7, 3, 4], index=idx)
print(s.resample("D").sum())
2026-01-01    19
Freq: D, dtype: int64

Пример 3. Up-sampling с ffill

import pandas as pd

idx = pd.date_range("2026-01-01", periods=2, freq="2min")
s = pd.Series([10, 20], index=idx)
print(s.resample("1min").ffill())
2026-01-01 00:00:00    10
2026-01-01 00:01:00    10
2026-01-01 00:02:00    20
Freq: 1min, dtype: int64

Пример 4. OHLC по 5-минутным барам

import pandas as pd

idx = pd.date_range("2026-01-01", periods=10, freq="1min")
s = pd.Series([1, 3, 2, 5, 4, 6, 8, 7, 9, 10], index=idx)
print(s.resample("5min").ohlc())
                     open  high  low  close
2026-01-01 00:00:00     1     5    1      4
2026-01-01 00:05:00     6    10    6     10

Пример 5. По столбцу через on=

import pandas as pd

df = pd.DataFrame({
    "ts":   pd.date_range("2026-01-01", periods=4, freq="30s"),
    "temp": [22, 22, 23, 23],
})
print(df.resample("1min", on="ts").mean())
                     temp
ts
2026-01-01 00:00:00  22.0
2026-01-01 00:01:00  23.0

См. также

Примечание

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

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