РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
627 of 687 menu

Класс Resampler

Класс Resampler создается при вызове метода resample на объекте DataFrame или Series с индексом времени. Он позволяет изменять частоту дискретизации временных данных, агрегируя или интерполируя значения. Объект Resampler является итератором и предоставляет множество методов для агрегации, аналогичных методам группировки. Основное его назначение - преобразование временных рядов с одной частоты на другую, например, с ежедневной на ежемесячную.

Синтаксис

resampler = df.resample(rule, axis=0, closed=None, label=None, convention='start', kind=None, loffset=None, base=None, on=None, level=None, origin='start_day', offset=None, group_keys=False)

Основные параметры метода resample:

  • rule - строка или объект DateOffset, задающий новую частоту (например, 'M' для месяца, 'D' для дня, 'H' для часа)
  • axis - ось, по которой производится передискретизация (по умолчанию 0)
  • closed - определяет, с какой стороны интервал является закрытым ('right' или 'left')
  • label - определяет, какую сторону интервала использовать для маркировки ('right' или 'left')
  • convention - для передискретизации с понижением частоты ('start' или 'end')
  • on - имя столбца, который содержит временные метки
  • level - имя или номер уровня индекса для передискретизации

Пример

Создадим временной ряд с ежедневной частотой и выполним передискретизацию с понижением частоты до ежемесячной с вычислением среднего значения:

import pandas as pd date_rng = pd.date_range(start='2025-01-01', end='2025-03-31', freq='D') df = pd.DataFrame(date_rng, columns=['date']) df['a'] = range(1, len(df) + 1) df.set_index('date', inplace=True) res = df.resample('M').mean() print(res)

Результат выполнения кода:

a date 2025-01-31 16.0 2025-02-28 45.5 2025-03-31 74.0

Пример

Выполним передискретизацию с повышением частоты с ежедневной на ежечасную, заполняя пропуски с помощью метода ffill:

import pandas as pd date_rng = pd.date_range(start='2025-01-01', periods=3, freq='D') df = pd.DataFrame({'a': [10, 20, 30]}, index=date_rng) resampler = df.resample('H') res = resampler.ffill() print(res)

Результат выполнения кода:

a 2025-01-01 00:00:00 10 2025-01-01 01:00:00 10 2025-01-01 02:00:00 10 2025-01-01 03:00:00 10 2025-01-01 04:00:00 10 ... ... 2025-01-02 20:00:00 20 2025-01-02 21:00:00 20 2025-01-02 22:00:00 20 2025-01-02 23:00:00 20 2025-01-03 00:00:00 30 [49 rows x 1 columns]

Пример

Применим несколько агрегирующих функций одновременно с помощью метода agg объекта Resampler:

import pandas as pd date_rng = pd.date_range(start='2025-01-01', periods=10, freq='D') df = pd.DataFrame({'a': [5, 3, 8, 2, 7, 1, 9, 4, 6, 3]}, index=date_rng) resampler = df.resample('2D') res = resampler.agg(['mean', 'sum', 'max', 'min']) print(res)

Результат выполнения кода:

a mean sum max min date 2025-01-01 4.0 8 5 3 2025-01-03 5.0 10 8 2 2025-01-05 4.0 8 7 1 2025-01-07 6.5 13 9 4 2025-01-09 4.5 9 6 3

Пример

Пример использования объекта Resampler для получения последнего значения в каждом периоде с помощью метода last:

import pandas as pd date_rng = pd.date_range(start='2025-01-01', periods=15, freq='D') df = pd.DataFrame({'a': range(15)}, index=date_rng) resampler = df.resample('W') res = resampler.last() print(res)

Результат выполнения кода:

a date 2025-01-05 4 2025-01-12 11 2025-01-19 14

Пример

Объект Resampler поддерживает итерацию по группам, аналогично объекту группировки:

import pandas as pd date_rng = pd.date_range(start='2025-01-01', periods=6, freq='D') df = pd.DataFrame({'a': [10, 20, 30, 40, 50, 60]}, index=date_rng) resampler = df.resample('2D') for name, group in resampler: print(f"{name} -> {group['a'].tolist()}")

Результат выполнения кода:

2025-01-01 00:00:00 -> [10, 20] 2025-01-03 00:00:00 -> [30, 40] 2025-01-05 00:00:00 -> [50, 60]

Смотрите также

  • метод mean,
    который вычисляет среднее значение для каждого периода
  • метод sum,
    который вычисляет сумму значений для каждого периода
  • метод agg,
    который применяет одну или несколько агрегирующих функций
  • метод ffill,
    который заполняет пропуски значениями из предыдущего периода
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить