Метод aggregate
Метод aggregate применяется к объекту GroupBy
и позволяет применять одну или несколько функций агрегации
к каждой группе данных. В качестве аргумента можно передать
имя функции, список функций или словарь с отображением столбцов
на функции. Метод возвращает DataFrame или Series
с агрегированными результатами. Этот метод является альтернативой
методу agg и полностью идентичен ему по функциональности.
Синтаксис
df.groupby(by).aggregate(func)
df.groupby(by).aggregate([func1, func2])
df.groupby(by).aggregate({col: func})
df.groupby(by).aggregate({col: [func1, func2]})
Пример
Давайте сгруппируем данные по столбцу и применим одну функцию агрегации:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 1, 2, 1, 2],
'b': [10, 20, 30, 40, 50, 60]
})
res = df.groupby('a').aggregate('sum')
print(res)
Результат выполнения кода:
b
a
1 90
2 120
Пример
Давайте применим несколько функций агрегации к столбцу:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 1, 2, 1, 2],
'b': [10, 20, 30, 40, 50, 60]
})
res = df.groupby('a').aggregate(['sum', 'mean'])
print(res)
Результат выполнения кода:
b
sum mean
a
1 90 30.0
2 120 40.0
Пример
Давайте применим разные функции к разным столбцам с помощью словаря:
import pandas as pd
df = pd.DataFrame({
'group': ['A', 'B', 'A', 'B', 'A'],
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.groupby('group').aggregate({
'a': 'sum',
'b': 'mean'
})
print(res)
Результат выполнения кода:
a b
group
A 9 30.0
B 6 30.0
Пример
Давайте применим несколько функций к разным столбцам:
import pandas as pd
df = pd.DataFrame({
'group': ['A', 'B', 'A', 'B', 'A'],
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.groupby('group').aggregate({
'a': ['sum', 'max'],
'b': ['mean', 'min']
})
print(res)
Результат выполнения кода:
a b
sum max mean min
group
A 9 5 30.0 10
B 6 4 30.0 20
Пример
Давайте используем пользовательскую функцию для агрегации:
import pandas as pd
df = pd.DataFrame({
'group': ['A', 'B', 'A', 'B', 'A'],
'a': [1, 2, 3, 4, 5]
})
res = df.groupby('group').aggregate(
lambda x: x.max() - x.min()
)
print(res)
Результат выполнения кода:
a
group
A 4
B 2
Пример
Давайте применим функцию к нескольким столбцам с помощью списка:
import pandas as pd
df = pd.DataFrame({
'group': ['A', 'B', 'A', 'B', 'A'],
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.groupby('group').aggregate('sum')
print(res)
Результат выполнения кода:
a b
group
A 9 90
B 6 60