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

Метод transform

Метод transform класса Resampler применяется к группам данных, полученным в результате передискретизации временного ряда. Он принимает пользовательскую функцию и применяет её независимо к каждой группе, возвращая результат той же длины, что и исходный DataFrame или Series. В отличие от agg или apply, метод transform не изменяет количество строк, а возвращает трансформированные значения для каждой исходной строки. Это полезно для операций нормализации, заполнения пропусков или центрирования в разрезе временных периодов. Первым параметром передаётся функция или строка с именем встроенной функции, вторым параметром можно указать аргументы для передачи в функцию.

Синтаксис

resampler.transform(func, *args, **kwargs)

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

  • func - функция, применяемая к каждой группе. Может быть именем встроенной функции (например, 'mean', 'sum') или вызываемым объектом.
  • *args, **kwargs - дополнительные аргументы, передаваемые в функцию.

Пример

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

import pandas as pd # Создаем временной ряд с почасовыми данными dates = pd.date_range('2026-01-01', periods=8, freq='H') df = pd.DataFrame({'a': [1, 2, 3, 4, 5, 6, 7, 8]}, index=dates) # Применяем передискретизацию по дням и вычитаем среднее за день из каждого значения res = df.resample('D').transform(lambda x: x - x.mean()) print(res)

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

a 2026-01-01 00:00:00 -1.5 2026-01-01 01:00:00 -0.5 2026-01-01 02:00:00 0.5 2026-01-01 03:00:00 1.5 2026-01-02 00:00:00 -1.5 2026-01-02 01:00:00 -0.5 2026-01-02 02:00:00 0.5 2026-01-02 03:00:00 1.5

Пример

Используем transform с именем встроенной функции для нормализации (вычитание медианы) в разрезе двухчасовых интервалов:

import pandas as pd # Создаем временной ряд с получасовыми данными dates = pd.date_range('2026-01-01', periods=6, freq='30T') df = pd.DataFrame({'b': [10, 20, 30, 40, 50, 60]}, index=dates) # Передискретизация по 2 часам и вычитание медианы res = df.resample('2H').transform('median') print(res)

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

b 2026-01-01 00:00:00 20 2026-01-01 00:30:00 20 2026-01-01 01:00:00 20 2026-01-01 01:30:00 50 2026-01-01 02:00:00 50 2026-01-01 02:30:00 50

Пример

Применим пользовательскую функцию для заполнения пропусков средним значением в группе (передискретизация по дням):

import pandas as pd import numpy as np # Создаем временной ряд с пропусками dates = pd.date_range('2026-01-01', periods=6, freq='D') df = pd.DataFrame({'c': [1, np.nan, 3, np.nan, 5, 6]}, index=dates) # Заполняем пропуски средним за день (в данном случае группа = один день) res = df.resample('D').transform(lambda x: x.fillna(x.mean())) print(res)

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

c 2026-01-01 1.0 2026-01-02 3.0 2026-01-03 3.0 2026-01-04 5.0 2026-01-05 5.0 2026-01-06 6.0

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

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