Ответ
Группировка и агрегация данных в Pandas — это ключевая операция для анализа, выполняемая с помощью метода .groupby(). Он работает по принципу Split-Apply-Combine:
- Split: Данные разделяются на группы на основе значений в указанном столбце (или нескольких столбцах).
- Apply: К каждой группе применяется функция агрегации (например,
sum(),mean(),count()). - Combine: Результаты объединяются в новую структуру данных (обычно DataFrame или Series).
Практический пример:
Предположим, у нас есть DataFrame с данными о продажах в разных отделах:
import pandas as pd
data = {
'department': ['Sales', 'IT', 'Sales', 'IT', 'IT'],
'employee': ['John', 'Anna', 'Peter', 'Linda', 'Mike'],
'sales': [200, 150, 300, 100, 250]
}
df = pd.DataFrame(data)
Задача: Посчитать общую сумму продаж и количество сотрудников для каждого отдела.
# Группируем данные по столбцу 'department'
# Применяем агрегирующие функции к столбцу 'sales'
agg_result = df.groupby('department')['sales'].agg(['sum', 'count'])
print(agg_result)
Результат выполнения:
sum count
department
IT 500 3
Sales 500 2
Этот результат показывает, что в отделе IT было 3 продажи на общую сумму 500, а в отделе Sales — 2 продажи на ту же сумму. Метод .agg() позволяет применять сразу несколько функций, что делает код компактным и читаемым.
Ответ 18+ 🔞
А, слушай, вот эта штука с группировкой в пандасе — groupby() — это вообще, блядь, основа основ, без неё нихуя не проанализируешь. Работает она по принципу, который умные дядьки назвали Split-Apply-Combine, а по-нашему — «разделяй, властвуй и склеивай обратно».
- Split (Разъебать): Твои данные раскидываются по кучкам в зависимости от того, что написано в выбранном столбце. Скажем, всё, что про «Продажи», в одну кучу, всё про «IT» — в другую.
- Apply (Приложить): К каждой этой куче применяешь какую-нибудь функцию — посчитать сумму, среднее, количество, ну ты понял.
- Combine (Склеить): А потом результаты из всех кучек собираются обратно в одну красивую табличку.
Давай на живом примере, а то нихуя не понятно.
Допустим, есть у нас табличка с продажами по отделам:
import pandas as pd
data = {
'department': ['Sales', 'IT', 'Sales', 'IT', 'IT'],
'employee': ['John', 'Anna', 'Peter', 'Linda', 'Mike'],
'sales': [200, 150, 300, 100, 250]
}
df = pd.DataFrame(data)
Задача: Нам надо, сука, узнать, сколько каждый отдел в целом наторговал и скока у них там работяг.
# Группируем всё по колонке 'department', а потом из этой кучи берём только 'sales'
# И говорим: «Примени-ка к этому вот сумму и посчитай количество записей»
agg_result = df.groupby('department')['sales'].agg(['sum', 'count'])
print(agg_result)
И что мы получаем на выходе, ёпта:
sum count
department
IT 500 3
Sales 500 2
Вот, смотри, красота! Отдел IT: три продажи на общую сумму 500. Отдел Sales: две продажи, но тоже на 500. Метод .agg() — это вообще волшебная палочка, можно сразу кучу функций впихнуть, и всё красиво и понятно выходит. Не надо в цикле пиздеться, одним махом всё делается.