Pandas: сортировка и агрегация данных
Сортировка и агрегация данных — очень распространённые и важные операции в анализе данных, особенно при анализе данных в больших наборах данных.
Сортировка помогает упорядочивать данные по определённым критериям, а агрегация позволяет обобщать данные и вычислять различные статистики.
Pandas предоставляет мощные функции сортировки и агрегации, которые помогают аналитикам эффективно обрабатывать данные.
| Действие | Метод | Описание | Общие функции/методы |
|---|---|---|---|
| Сортировка | sort_values(by, ascending) |
Сортировать по значениям столбца,ascendingУправление порядком по возрастанию/убыванию |
df.sort_values(by='column') |
| Сортировка | sort_index(axis) |
Сортировка по индексу строки или столбца | df.sort_index(axis=0) |
| Групповая агрегация | groupby(by) |
После группировки по столбцу примените функции агрегации | df.groupby('column') |
| Функции агрегации | agg() |
Функции агрегации, такие какsum()、mean()、count()ожидание |
df.groupby('column').agg({'value': 'sum'}) |
| Множественная агрегация | agg([func1, func2]) |
Примените несколько функций агрегации к одному и тому же столбцу | df.groupby('column').agg({'value': ['mean', 'sum']}) |
| Сортировка после группировки | apply(lambda x: x.sort_values(...)) |
Сортировать после группировки | df.groupby('column').apply(lambda x: x.sort_values(...)) |
| Сводная таблица | pivot_table() |
Создайте сводную таблицу для обобщения данных по строкам и столбцам |
1. Сортировка данных
Сортировка— это упорядочивание данных по возрастанию или убыванию в соответствии со значениями столбца. Pandas предоставляет два основных метода сортировки:sort_values()иsort_index()。
Методы сортировки
sort_values(): Сортировка по значениям столбца.sort_index(): Сортировка по индексу строк или столбцов.
Примеры
| Действие | Метод | Описание | Пример |
|---|---|---|---|
| Сортировка по значению | df.sort_values(by, ascending) |
По указанному столбцу (by) сортировать,ascendingУправляет сортировкой по возрастанию или убыванию, по умолчанию — по возрастанию |
df.sort_values(by='Age', ascending=False) |
| Сортировка по индексу | df.sort_index(axis) |
Сортировка по индексу строки или столбца,axisУправляет сортировкой по строке или столбцу |
df.sort_index(axis=0) |
sort_values()Пример:
Примеры
# Пример данных
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40],
'Зарплата': [50000, 60000, 70000, 80000]}
df = pd.DataFrame(data)
# Сортировка по убыванию значения столбца "Age"
df_sorted = df.sort_values(by='Age', ascending=False)
print(df_sorted)
Вывод:
Name Age Salary 3 David 40 80000 2 Charlie 35 70000 1 Bob 30 60000 0 Alice 25 50000
sort_index()Пример:
Примеры
df_sorted_by_index = df.sort_index(axis=0)
print(df_sorted_by_index)
Вывод:
Name Age Salary
0 Alice 25 50000
1 Bob 30 60000
2 Charlie 35 70000
3 David 40 80000
2. Агрегация данных
Агрегация— это обобщение данных по определённым правилам, обычно выполнение таких операций, как суммирование, усреднение, нахождение максимума, нахождение минимума и т. д. над данными в определённых столбцах. Pandas предоставляетgroupby()метод для группировки данных с последующим применением различных функций агрегации.
Методы агрегации
groupby(): Группировка по определённым столбцам.- Функции агрегации: например,
sum(),mean(),count(),min(),max(),std()и т. д.
Примеры
| Действие | Метод | Описание | Пример |
|---|---|---|---|
| Группировка по столбцу и агрегация | df.groupby(by).agg() |
Сгруппируйте по указанному столбцу (by) и сгруппируйте,agg()Можно передать различные функции агрегации для выполнения нескольких операций |
df.groupby('Department').agg({'Salary': 'mean'}) |
| Применение нескольких функций агрегации | df.groupby(by).agg([func1, func2]) |
Несколько функций агрегации можно применить к одному и тому же столбцу, возвращая несколько результатов агрегации | df.groupby('Department').agg({'Salary': ['mean', 'sum']}) |
groupby()Пример:
Примеры
# Пример данных
data = {'Department': ['HR', 'Finance', 'HR', 'IT', 'IT'],
'Employee': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Зарплата': [50000, 60000, 55000, 70000, 75000]}
df = pd.DataFrame(data)
# Сгруппировать по отделу и вычислить среднюю зарплату для каждого отдела
grouped = df.groupby('Department')['Salary'].mean()
print(grouped)
Вывод:
Department Finance 60000.0 HR 52500.0 IT 72500.0 Name: Salary, dtype: float64
Применение нескольких функций агрегации:
Примеры
grouped_multiple = df.groupby('Department').agg({'Salary': ['mean', 'sum']})
print(grouped_multiple)
Вывод:
Salary
mean sum
Department
Finance 60000.0 60000
HR 52500.0 105000
IT 72500.0 145000
3. Сортировка после группировки
Агрегированные данные можно дополнительно отсортировать по значению определённого столбца, что помогает найти наиболее важные значения в конкретных группах.
Сортировка после группировки
| Действие | Метод | Описание | Пример |
|---|---|---|---|
| Сортировка после группировки | df.groupby(by).apply(lambda x: x.sort_values(by='col')) |
Сортировка по значению столбца внутри каждой группы. | df.groupby('Department').apply(lambda x: x.sort_values(by='Salary', ascending=False)) |
Пример сортировки после группировки:
Примеры
grouped_sorted = df.groupby('Department').apply(lambda x: x.sort_values(by='Salary', ascending=False))
print(grouped_sorted)
Вывод:
Department Employee Salary Department Finance Bob 60000 HR Charlie 55000 HR Alice 50000 IT Eve 75000 IT David 70000
4. Сводные таблицы
Сводная таблица (Pivot Table) — это особый метод агрегации, который позволяет быстро обобщать данные с помощью строк, столбцов и функций агрегации, аналогично сводным таблицам в Excel.
Примеры
| Действие | Метод | Описание | Пример |
|---|---|---|---|
| Создание сводной таблицы | df.pivot_table(values, index, columns, aggfunc) |
Используйте указанные столбцы для категоризации и обобщения по строкам и столбцам,values— это значение, подлежащее агрегированию,aggfunc— это функция агрегирования |
df.pivot_table(values='Salary', index='Department', aggfunc='mean') |
Пример сводной таблицы:
Примеры
pivot_table = df.pivot_table(values='Salary', index='Department', aggfunc='mean')
print(pivot_table)
Вывод:
Department Finance 60000.0 HR 52500.0 IT 72500.0 Name: Salary, dtype: float64Другие расширения