Группировка и агрегация данных в pandas

Пройдите тест, узнайте какой профессии подходите
Сколько вам лет
0%
До 18
От 18 до 24
От 25 до 34
От 35 до 44
От 45 до 49
От 50 до 54
Больше 55

Введение в группировку и агрегацию данных в pandas

Pandas — это мощная библиотека для анализа данных в Python, которая предоставляет множество инструментов для работы с данными. Одной из ключевых возможностей pandas является группировка и агрегация данных. Эти операции позволяют вам эффективно обрабатывать и анализировать большие наборы данных, извлекая из них полезную информацию. В этой статье мы рассмотрим основные методы группировки и агрегации данных в pandas, а также приведем примеры их использования. Мы также обсудим, как комбинировать различные методы для достижения более сложных целей анализа данных.

Пошаговый план для смены профессии

Основные методы группировки данных

Метод groupby

Метод groupby является основным инструментом для группировки данных в pandas. Он позволяет разделить DataFrame на группы по значению одного или нескольких столбцов. Это особенно полезно, когда вам нужно выполнить агрегатные операции, такие как суммирование, усреднение или подсчет значений в каждой группе.

Python
Скопировать код
import pandas as pd

data = {
    'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Value': [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)

grouped = df.groupby('Category')

Группировка по нескольким столбцам

Вы также можете группировать данные по нескольким столбцам, передав список столбцов в метод groupby. Это позволяет вам создавать более сложные группы и выполнять более детализированный анализ данных.

Python
Скопировать код
data = {
    'Category': ['A', 'A', 'B', 'B', 'A', 'B'],
    'Subcategory': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
    'Value': [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)

grouped = df.groupby(['Category', 'Subcategory'])

Применение агрегатных функций

Метод agg

После группировки данных, вы можете применять различные агрегатные функции, такие как sum, mean, count и другие, используя метод agg. Это позволяет вам получить сводную информацию о каждой группе.

Python
Скопировать код
aggregated = grouped.agg({'Value': 'sum'})
print(aggregated)

Примеры агрегатных функций

  • sum: Сумма значений в группе.
  • mean: Среднее значение в группе.
  • count: Количество элементов в группе.
  • min: Минимальное значение в группе.
  • max: Максимальное значение в группе.
Python
Скопировать код
aggregated = grouped.agg({
    'Value': ['sum', 'mean', 'count', 'min', 'max']
})
print(aggregated)

Применение нескольких агрегатных функций

Вы можете комбинировать несколько агрегатных функций для получения более детализированной информации о группах. Это позволяет вам одновременно получить несколько метрик для каждой группы.

Python
Скопировать код
aggregated = grouped.agg({
    'Value': ['sum', 'mean', 'count']
})
print(aggregated)

Комбинирование группировки и агрегации

Метод apply

Метод apply позволяет вам применять произвольные функции к каждой группе. Это особенно полезно, когда стандартные агрегатные функции не подходят для вашей задачи. Вы можете написать свою функцию и применить ее к каждой группе.

Python
Скопировать код
def custom_aggregation(group):
    return group['Value'].sum() / group['Value'].count()

aggregated = grouped.apply(custom_aggregation)
print(aggregated)

Примеры использования метода apply

Метод apply предоставляет большую гибкость в анализе данных. Например, вы можете использовать его для вычисления сложных метрик, которые не могут быть легко выражены с помощью стандартных агрегатных функций.

Python
Скопировать код
def range_aggregation(group):
    return group['Value'].max() – group['Value'].min()

aggregated = grouped.apply(range_aggregation)
print(aggregated)

Примеры и практические упражнения

Пример 1: Анализ продаж

Предположим, у вас есть DataFrame с данными о продажах, и вы хотите узнать общую сумму продаж и среднюю цену продажи для каждого продукта. Это поможет вам понять, какие продукты приносят наибольший доход и какие из них имеют наибольшую среднюю цену.

Python
Скопировать код
sales_data = {
    'Product': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Sales': [100, 200, 150, 250, 200, 300],
    'Price': [10, 20, 15, 25, 20, 30]
}
df = pd.DataFrame(sales_data)

grouped = df.groupby('Product')
aggregated = grouped.agg({
    'Sales': 'sum',
    'Price': 'mean'
})
print(aggregated)

Пример 2: Анализ посещаемости

Допустим, у вас есть данные о посещаемости студентов, и вы хотите узнать количество посещений и среднюю оценку для каждого студента. Это поможет вам понять, как часто студенты посещают занятия и как их посещаемость коррелирует с оценками.

Python
Скопировать код
attendance_data = {
    'Student': ['Alice', 'Bob', 'Alice', 'Bob', 'Alice', 'Bob'],
    'Attendance': [1, 1, 1, 1, 1, 1],
    'Grade': [90, 85, 95, 80, 85, 90]
}
df = pd.DataFrame(attendance_data)

grouped = df.groupby('Student')
aggregated = grouped.agg({
    'Attendance': 'sum',
    'Grade': 'mean'
})
print(aggregated)

Пример 3: Анализ производительности сотрудников

Предположим, у вас есть данные о производительности сотрудников, и вы хотите узнать общую сумму выполненных задач и среднее время выполнения задач для каждого отдела. Это поможет вам понять, какие отделы работают наиболее эффективно.

Python
Скопировать код
performance_data = {
    'Department': ['HR', 'IT', 'HR', 'IT', 'HR', 'IT'],
    'Tasks_Completed': [50, 60, 55, 65, 52, 62],
    'Time_Spent': [5, 10, 6, 11, 7, 12]
}
df = pd.DataFrame(performance_data)

grouped = df.groupby('Department')
aggregated = grouped.agg({
    'Tasks_Completed': 'sum',
    'Time_Spent': 'mean'
})
print(aggregated)

Пример 4: Анализ финансовых данных

Допустим, у вас есть данные о финансовых транзакциях, и вы хотите узнать общую сумму транзакций и среднюю сумму транзакции для каждого типа транзакции. Это поможет вам понять, какие типы транзакций являются наиболее значимыми.

Python
Скопировать код
financial_data = {
    'Transaction_Type': ['Credit', 'Debit', 'Credit', 'Debit', 'Credit', 'Debit'],
    'Amount': [1000, 2000, 1500, 2500, 2000, 3000]
}
df = pd.DataFrame(financial_data)

grouped = df.groupby('Transaction_Type')
aggregated = grouped.agg({
    'Amount': 'sum',
    'Amount': 'mean'
})
print(aggregated)

Практическое упражнение

Попробуйте создать DataFrame с данными о сотрудниках компании, включающими столбцы Department, Salary, и Years_of_Service. Затем выполните группировку по Department и примените агрегатные функции для получения общей суммы зарплат и среднего стажа работы в каждом отделе. Это поможет вам понять, какие отделы имеют наибольший общий фонд заработной платы и какой средний стаж работы сотрудников в каждом отделе.

Python
Скопировать код
employee_data = {
    'Department': ['HR', 'IT', 'HR', 'IT', 'HR', 'IT'],
    'Salary': [50000, 60000, 55000, 65000, 52000, 62000],
    'Years_of_Service': [5, 10, 6, 11, 7, 12]
}
df = pd.DataFrame(employee_data)

grouped = df.groupby('Department')
aggregated = grouped.agg({
    'Salary': 'sum',
    'Years_of_Service': 'mean'
})
print(aggregated)

Эти примеры и упражнения помогут вам лучше понять, как использовать методы группировки и агрегации данных в pandas для анализа данных. Надеюсь, что эта статья была полезной и вы сможете применять полученные знания в своих проектах. 😉

Читайте также

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой метод в pandas используется для группировки данных?
1 / 5

Загрузка...