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()Пример:

Примеры

import pandas as pd

# Пример данных
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()Пример:

Примеры

import pandas as pd

# Пример данных
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 для вычисления средней зарплаты по каждому отделу
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
Другие расширения