Метод groupby
Метод groupby применяется к DataFrame
и возвращает объект DataFrameGroupBy, который
позволяет выполнять группировку данных по одному или
нескольким столбцам. Первым параметром передаются
столбцы для группировки, вторым можно указать
агрегирующую функцию.
Синтаксис
df.groupby(by[, axis][, as_index][, sort])
Пример
Давайте сгруппируем данные по столбцу 'a' и посчитаем сумму в каждой группе:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50]
})
res = df.groupby('a').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, 10, 30, 40, 50],
'c': [100, 200, 300, 400, 500]
})
res = df.groupby(['a', 'b']).agg(['sum', 'mean'])
print(res)
Результат выполнения кода:
c
sum mean
a b
1 10 300 150.0
2 30 300 300.0
40 400 400.0
3 50 500 500.0
Пример
Давайте применим пользовательскую функцию к каждой группе:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50]
})
def custom_agg(x):
return x.max() - x.min()
res = df.groupby('a').agg(custom_agg)
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', as_index=False).sum()
print(res)
Результат выполнения кода:
a b
0 1 30
1 2 70
2 3 50
Смотрите также
-
метод
pivot_table,
который создаёт сводную таблицу -
метод
aggregate,
который применяет агрегирующие функции к данным -
метод
apply,
который применяет функцию к данным -
метод
transform,
который преобразует данные в рамках групп