Многомерная сводка данных с использованием pivot_table

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

Основные параметры функции pivot_table

Функция pivot_table имеет несколько ключевых параметров:

  1. data: Ваш DataFrame, содержащий исходные данные.

  2. values: Список колонок, которые нужно агрегировать (например, суммы или средние значения).

  3. index: Колонки, которые будут использоваться в качестве индексов строк сводной таблицы.

  4. columns: Колонки, которые будут использоваться в качестве столбцов сводной таблицы.

  5. aggfunc: Функция агрегации, которую нужно применить к данным. По умолчанию это numpy.mean, но можно использовать другие функции, такие как sum, count, max, min и т.д.

  6. fill_value: Значение, которым будут заменены пропущенные значения в сводной таблице.

  7. dropna: Логическое значение, указывающее, следует ли исключать столбцы или строки, содержащие только пропущенные значения.

Пример использования pivot_table

Рассмотрим пример. Допустим, у нас есть DataFrame с данными о продажах:

import pandas as pd

# Пример данных
data = {
    'Дата': ['2024-08-01', '2024-08-01', '2024-08-02', '2024-08-02'],
    'Магазин': ['Магазин A', 'Магазин B', 'Магазин A', 'Магазин B'],
    'Продукт': ['Товар 1', 'Товар 2', 'Товар 1', 'Товар 3'],
    'Продажи': [100, 200, 150, 300]
}

df = pd.DataFrame(data)
df['Дата'] = pd.to_datetime(df['Дата'])  # Преобразуем дату в формат datetime

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

pivot_table = pd.pivot_table(
    df,
    values='Продажи',
    index=['Дата', 'Магазин'],
    columns='Продукт',
    aggfunc='sum',
    fill_value=0
)
print(pivot_table)

Объяснение результата

В этой сводной таблице:

  • index задает строки таблицы. Мы указали две колонки: 'Дата' и 'Магазин'. Это означает, что строки будут сгруппированы по этим значениям.

  • columns задает столбцы. Мы указали колонку 'Продукт', поэтому каждый уникальный продукт станет отдельным столбцом.

  • values указывает, какие данные мы хотим агрегировать. В этом случае это 'Продажи'.

  • aggfunc определяет функцию агрегации. Мы выбрали 'sum', чтобы получить общую сумму продаж.

  • fill_value заменяет пропущенные значения на 0.

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

Пример вывода

Продукт           Товар 1  Товар 2  Товар 3
Дата       Магазин                         
2024-08-01 Магазин A      100        0        0
           Магазин B        0      200        0
2024-08-02 Магазин A      150        0        0
           Магазин B        0        0      300

Дополнительные параметры

  • dropna: Если установить dropna=True, то будут исключены все уровни индекса или колонки, которые полностью заполнены пропущенными значениями. Например, если dropna=True, а в данных есть уровень индекса с только пропущенными значениями, то такой уровень будет удален.

Заключение

Функция pivot_table в pandas — это мощный инструмент для создания сводных таблиц и анализа данных. Она позволяет гибко группировать данные по разным признакам и выполнять различные виды агрегаций.

Last updated