Сводные таблицы

Сводная таблица сворачивает тысячи строк в компактный отчёт за несколько кликов — без единой формулы.

Сводная таблица (pivot table) — инструмент, который группирует строки исходной таблицы по выбранным признакам и считает по ним итоги (сумму, среднее, количество), мгновенно перестраивая отчёт при перетаскивании полей.

Зачем это нужно

Представьте журнал продаж интернет-магазина: 5000 строк, каждая — это одна покупка с полями Дата, Город, Категория, Сумма. Вопрос директора: «Сколько мы продали по каждому городу за квартал?» Решать это формулами СУММЕСЛИ по каждому городу вручную — долго и хрупко: добавился новый город, и отчёт молчит. Сводная таблица отвечает на такой вопрос за десять секунд и сама подхватывает новые значения.

Главная идея: вы не пишете формулы, а раскладываете поля по областям. Программа сама находит уникальные значения и считает итоги. Это переход от «считать ячейки» к «задавать вопросы данным».

Четыре области сводной

Любая сводная строится из четырёх «корзин», куда вы перетаскиваете заголовки столбцов исходной таблицы:

ОбластьЧто туда кладутПример
Строкипризнак, по которому идёт разбивка сверху внизГород
Столбцывторой признак, разбивка слева направоКатегория
Значениячисло, которое агрегируется (сумма, среднее, счёт)Сумма заказа
Фильтрысрез всей таблицы целикомГод = 2025

Перетащили Город в строки, Сумма в значения — и получили выручку по городам. Добавили Категория в столбцы — таблица превратилась в матрицу «город × категория».

Пример «было → стало»

Было — плоский журнал (фрагмент из 8 строк):

ГородКатегорияСумма
МоскваКниги1200
МоскваИгры3000
КазаньКниги800
МоскваКниги500
КазаньИгры2000
КазаньКниги700
МоскваИгры1500
КазаньИгры1000

Стало — сводная (строки = Город, столбцы = Категория, значения = сумма по полю Сумма):

СуммаИгрыКнигиИтог
Казань300015004500
Москва450017006200
Итог7500320010700

Восемь строк журнала свернулись в матрицу 2×2 с итогами по краям. Проверьте Казань-Игры: 2000 + 1000 = 3000 — сходится.

Группировка и агрегирование

В области значений вы выбираете, как сворачивать числа. Самые частые операции:

  • Сумма — складывает все попавшие в ячейку значения (выручка, штуки).
  • Количество — считает число строк (сколько было заказов).
  • Среднее — арифметическое среднее (средний чек).
  • Максимум / минимум — крайние значения.

Средний чек по городу — это сумма выручки, делённая на число заказов. Формально для города с заказами на суммы $x_1, x_2, \ldots, x_n$ среднее равно:

$$ \bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i $$

Для Москвы (4 заказа: 1200, 3000, 500, 1500) получаем $\bar{x} = \frac{6200}{4} = 1550$ рублей. Сводная посчитает это сама, если в значениях выбрать операцию «Среднее».

Даты обычно группируют по месяцам и кварталам: программа берёт поле Дата и сворачивает дни в более крупные периоды, чтобы отчёт стал читаемым.

Как это работает

Под капотом сводная делает то же, что в программировании называют «группировкой со свёрткой». Она проходит по всем строкам, для каждой вычисляет ключ (например, пара «Город+Категория») и накапливает итог в словаре ключ → сумма. Покажем это на чистом Python — он повторяет логику сводной по полю «Город»:

from collections import defaultdict

rows = [
    ("Москва", "Книги", 1200),
    ("Москва", "Игры", 3000),
    ("Казань", "Книги", 800),
    ("Москва", "Книги", 500),
    ("Казань", "Игры", 2000),
    ("Казань", "Книги", 700),
    ("Москва", "Игры", 1500),
    ("Казань", "Игры", 1000),
]

itogo = defaultdict(int)
for city, category, amount in rows:
    itogo[city] += amount   # ключ = город, копим сумму

for city in sorted(itogo):
    print(city, itogo[city])
print("Всего:", sum(itogo.values()))

Вывод:

Казань 4500
Москва 6200
Всего: 10700

Числа совпали со столбцом «Итог» в нашей сводной. Сводная таблица — это, по сути, такой цикл, обёрнутый в наглядный интерфейс: вы только указываете, что класть в ключ, а что суммировать.

Частые ошибки

  • Пустые заголовки или пробелы в шапке. Если у столбца нет имени, программа не возьмёт его как поле. Каждый столбец исходной таблицы должен иметь уникальный заголовок.
  • Дыры и итоги внутри данных. Пустая строка разрывает диапазон, а строка «Итого» посреди журнала попадёт в сводную как обычная запись и удвоит суммы. Исходник — это плоский список без промежуточных итогов.
  • Числа как текст. Если суммы записаны текстом (с лишними пробелами или буквой в конце), операция «Сумма» даст ноль или ошибку — сводная не складывает текст.
  • Забыли обновить. Сводная не пересчитывается сама при изменении исходника — нужно нажать «Обновить». Это частая причина «устаревшего» отчёта.
  • Перепутали сумму и количество. «Количество по полю Сумма» считает число заказов, а не выручку. Всегда проверяйте, какая операция выбрана в области значений.

Итоги

  • Сводная таблица группирует строки по признакам и считает итоги без формул.
  • Четыре области: строки, столбцы, значения и фильтры — вы раскладываете поля по ним мышью.
  • В значениях выбирается операция свёртки: сумма, количество, среднее, минимум, максимум.
  • Под капотом это группировка со свёрткой (словарь «ключ → итог»), как в примере на Python.
  • Исходник держите плоским и чистым, а сводную не забывайте обновлять.
Проверьте себя
1. Куда нужно перетащить поле «Сумма заказа», чтобы получить выручку по каждому городу?
AВ область строк
BВ область значений
CВ область фильтров
DВ область столбцов
2. Что произойдёт со сводной таблицей, если изменить данные в исходном журнале?
AСводная пересчитается мгновенно сама
BСводная сломается и выдаст ошибку
CСводная не изменится, пока её не обновить вручную
DИсходные данные вернутся к старым значениям