Сводные таблицы и перекрёстная агрегация
pd.pivot_table(), pd.crosstab() и изменение формы данных для получения сводной статистики.
«Сводные таблицы и перекрёстная агрегация» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Изменение формы данных для анализа
Сводная таблица преобразует длинные данные в сетку, обобщая одно значение по двум категориальным измерениям. Это знакомая Вам сводная таблица из электронных таблиц, но задаваемая программно.
import pandas as pd
df = pd.DataFrame({
"region": ["E", "E", "W", "W", "E"],
"product": ["A", "B", "A", "B", "A"],
"sales": [10, 20, 30, 40, 50],
})Базовый pivot_table
pd.pivot_table принимает values (числа для обобщения), index (строки) и columns (столбцы). По умолчанию он усредняет повторяющиеся ячейки.
pt = pd.pivot_table(df, values="sales", index="region", columns="product")
print(pt)
# product A B
# region
# E 30.0 20.0
# W 30.0 40.0Выбор aggfunc
Задайте aggfunc, чтобы управлять объединением повторяющихся значений: суммой, средним, количеством и другими способами. Используйте список, чтобы применить несколько функций одновременно.
pt = pd.pivot_table(df, values="sales", index="region",
columns="product", aggfunc="sum")
print(pt)Несколько aggfunc
Передайте список функций, чтобы вычислить несколько сводных показателей рядом.
pt = pd.pivot_table(df, values="sales", index="region",
aggfunc=["sum", "mean", "count"])
print(pt)Заполнение пропущенных ячеек
Комбинации без данных становятся значениями NaN. fill_value заменяет их, часто на 0, чтобы отчёты были аккуратными.
pt = pd.pivot_table(df, values="sales", index="region",
columns="product", aggfunc="sum", fill_value=0)
print(pt)Итоги (общие суммы)
Задайте margins=True, чтобы добавить общие итоги по строкам и столбцам, по умолчанию обозначенные как «Все».
pt = pd.pivot_table(df, values="sales", index="region",
columns="product", aggfunc="sum",
fill_value=0, margins=True)
print(pt)Несколько уровней индекса
Передайте списки в index или columns, чтобы получить иерархическую детализацию, например сначала по региону, затем по товару.
df["channel"] = ["on", "off", "on", "off", "on"]
pt = pd.pivot_table(df, values="sales",
index=["region", "channel"], aggfunc="sum")
print(pt)Перекрёстная таблица с crosstab
pd.crosstab — специализированная сводная таблица, которая COUNTS частоту сочетаний двух категориальных признаков; столбец values не нужен.
ct = pd.crosstab(df["region"], df["product"])
print(ct)
# product A B
# region
# E 2 1
# W 1 1Нормализация crosstab
Аргумент normalize превращает количества в доли: "index" — для каждой строки, "columns" — для каждого столбца или True — по общему итогу.
ct = pd.crosstab(df["region"], df["product"], normalize="index")
print(ct) # each row sums to 1.0crosstab со значениями
Передайте values и aggfunc, чтобы crosstab обобщал показатель, а не подсчитывал частоты, стирая грань между ним и pivot_table.
ct = pd.crosstab(df["region"], df["product"],
values=df["sales"], aggfunc="sum")
print(ct)pivot_table и crosstab
Используйте pivot_table при обобщении числового показателя, а crosstab — при подсчёте частот сочетаний категорий. crosstab также позволяет преобразовать значения в доли одной строкой кода.
Проверка знаний
Проверьте свои знания об изменении формы данных.
Повторение
Инструменты изменения формы:
pd.pivot_table(values, index, columns, aggfunc)обобщает показательfill_valueдля пустых ячеек,margins=Trueдля итогов- Передавайте списки в index и columns для создания иерархии
pd.crosstabподсчитывает сочетания;normalizeвозвращает доли
Часто задаваемые вопросы
Урок «Сводные таблицы и перекрёстная агрегация» бесплатный?
Да — полный текст урока «Сводные таблицы и перекрёстная агрегация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Сводные таблицы и перекрёстная агрегация»?
pd.pivot_table(), pd.crosstab() и изменение формы данных для получения сводной статистики. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Сводные таблицы и перекрёстная агрегация»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- GroupBy и агрегация
- Сводные таблицы и перекрёстная агрегация
- Расширенное объединение и соединение
- Временные ряды в Pandas