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

Метод resample

Метод resample применяется к Series с временным индексом и выполняет передискретизацию данных. Первым параметром передаётся правило изменения частоты (например, 'D' для дней, 'H' для часов, 'M' для месяцев). Метод возвращает объект Resampler, к которому затем применяется функция агрегации (сумма, среднее и т.д.).

Синтаксис

ser.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)

Пример

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

import pandas as pd dates = pd.date_range('2024-01-01', periods=14, freq='D') ser = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], index=dates) res = ser.resample('W').sum() print(res)

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

2024-01-07 28 2024-01-14 77 Freq: W-SUN, dtype: int64

Пример

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

import pandas as pd dates = pd.date_range('2024-01-01', periods=3, freq='D') ser = pd.Series([10, 20, 30], index=dates) res = ser.resample('12H').ffill() print(res)

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

2024-01-01 00:00:00 10 2024-01-01 12:00:00 10 2024-01-02 00:00:00 20 2024-01-02 12:00:00 20 2024-01-03 00:00:00 30 Freq: 12H, dtype: int64

Пример

Рассчитаем среднее значение за каждый месяц с помощью агрегации mean:

import pandas as pd dates = pd.date_range('2024-01-01', periods=60, freq='D') ser = pd.Series(range(1, 61), index=dates) res = ser.resample('ME').mean() print(res)

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

2024-01-31 16.0 2024-02-29 45.5 Freq: ME, dtype: float64

Пример

Применим несколько агрегаций одновременно с помощью метода agg:

import pandas as pd dates = pd.date_range('2024-01-01', periods=10, freq='D') ser = pd.Series([5, 3, 8, 4, 2, 9, 6, 7, 1, 10], index=dates) res = ser.resample('5D').agg(['sum', 'mean', 'max', 'min']) print(res)

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

sum mean max min 2024-01-05 22 4.4 8 2 2024-01-10 33 6.6 10 1

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

  • метод rolling,
    который применяет скользящее окно для вычислений
  • метод expanding,
    который выполняет расширяющиеся вычисления
  • метод groupby,
    который группирует данные по указанным критериям
  • метод shift,
    который сдвигает значения на заданное количество периодов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить