Метод agg
Метод agg применяется к объекту GroupBy
и позволяет применить одну или несколько функций агрегации
к каждой группе данных. Метод возвращает DataFrame
с результатами агрегации. В качестве первого параметра
можно передать функцию, список функций или словарь,
где ключами являются столбцы, а значениями - функции.
Синтаксис
df.groupby(by).agg(func)
Пример
Давайте сгруппируем данные по столбцу 'a' и применим функцию агрегации суммы к столбцу 'b':
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50]
})
res = df.groupby('a').agg('sum')
print(res)
Результат выполнения кода:
b
a
1 30
2 70
3 50
Пример
Давайте применим несколько функций агрегации одновременно с помощью списка:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50]
})
res = df.groupby('a').agg(['sum', 'mean'])
print(res)
Результат выполнения кода:
b
sum mean
a
1 30 15.0
2 70 35.0
3 50 50.0
Пример
Давайте применим разные функции к разным столбцам с помощью словаря:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50],
'c': [100, 200, 300, 400, 500]
})
res = df.groupby('a').agg({
'b': 'sum',
'c': 'mean'
})
print(res)
Результат выполнения кода:
b c
a
1 30 150.0
2 70 350.0
3 50 500.0
Пример
Давайте используем собственные функции для агрегации:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50]
})
res = df.groupby('a').agg(lambda x: x.max() - x.min())
print(res)
Результат выполнения кода:
b
a
1 10
2 10
3 0
Пример
Давайте применим именованные агрегации с помощью кортежей:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50]
})
res = df.groupby('a').agg(
sum_b=('b', 'sum'),
max_b=('b', 'max')
)
print(res)
Результат выполнения кода:
sum_b max_b
a
1 30 20
2 70 40
3 50 50