Метод groupby
Метод groupby применяется к Series
и группирует её элементы на основе переданного ключа.
Первым параметром передаётся ключ группировки - это может быть
другая Series, массив, словарь или функция. В результате
возвращается объект SeriesGroupBy, к которому можно
применить агрегирующие методы, такие как sum, mean,
count и другие.
Синтаксис
ser.groupby(by[, axis, level, as_index, sort, group_keys, squeeze, observed, dropna])
Пример
Сгруппируем серию по значениям другой серии и вычислим сумму в каждой группе:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
groups = pd.Series(['a', 'b', 'a', 'b', 'a'])
res = ser.groupby(groups).sum()
print(res)
Результат выполнения кода:
a 9
b 6
dtype: int64
Пример
Используем функцию в качестве ключа группировки. Сгруппируем элементы по их чётности и вычислим среднее значение:
import pandas as pd
ser = pd.Series([10, 20, 30, 40, 50])
res = ser.groupby(lambda x: 'even' if x % 2 == 0 else 'odd').mean()
print(res)
Результат выполнения кода:
even 30.0
odd NaN
dtype: float64
Пример
Сгруппируем серию по списку ключей и применим несколько агрегаций одновременно:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
keys = ['x', 'y', 'x', 'y', 'x']
res = ser.groupby(keys).agg(['sum', 'mean', 'count'])
print(res)
Результат выполнения кода:
sum mean count
x 9 3.0 3
y 6 3.0 2