Метод agg
Метод agg класса Resampler применяется к объекту,
полученному в результате передискретизации временного ряда,
и позволяет применить одну или несколько агрегирующих функций
к каждой группе. В качестве аргументов можно передать функцию,
список функций или словарь, где ключами являются имена столбцов,
а значениями - функции для них.
Синтаксис
resampler.agg(arg)
Пример
Создадим временной ряд и применим передискретизацию с агрегацией по сумме и среднему значению:
import pandas as pd
dates = pd.date_range('2023-01-01', periods=10, freq='D')
df = pd.DataFrame({'a': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, index=dates)
res = df.resample('3D').agg(['sum', 'mean'])
print(res)
Результат выполнения кода:
a
sum mean
2023-01-01 6 2.0
2023-01-04 15 5.0
2023-01-07 24 8.0
2023-01-10 10 10.0
Пример
Применим разные агрегирующие функции для разных столбцов с помощью словаря:
import pandas as pd
dates = pd.date_range('2023-01-01', periods=10, freq='D')
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'b': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
}, index=dates)
res = df.resample('3D').agg({
'a': 'sum',
'b': 'mean'
})
print(res)
Результат выполнения кода:
a b
2023-01-01 6 20.0
2023-01-04 15 50.0
2023-01-07 24 80.0
2023-01-10 10 100.0
Пример
Используем пользовательскую функцию для агрегации вместе со встроенной:
import pandas as pd
def range_func(x):
return x.max() - x.min()
dates = pd.date_range('2023-01-01', periods=10, freq='D')
df = pd.DataFrame({'a': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, index=dates)
res = df.resample('3D').agg(['sum', range_func])
print(res)
Результат выполнения кода:
a
sum range_func
2023-01-01 6 2
2023-01-04 15 2
2023-01-07 24 2
2023-01-10 10 0