Сводная с агрегацией в Pandas
Если в длинной таблице на одну пару
строка-мера попадает несколько чисел,
метод pivot выдаст ошибку.
Метод pivot_table как раз
для такого случая: он сводит
несколько значений в одно, чаще
всего суммой или средним.
Создадим таблицу с повторяющимися парами магазин-показатель и построим сводную с суммой:
import pandas as pd
data = {
'store': ['East', 'East', 'East', 'West'],
'label': ['rev', 'rev', 'cost', 'rev'],
'val': [200, 50, 80, 120],
}
long = pd.DataFrame(data)
table = long.pivot_table(
index='store',
columns='label',
values='val',
aggfunc='sum',
)
print(table) # выведет label cost rev
# store
# East 80.0 250.0
# West NaN 120.0
Для East две строки с меткой
rev сложились в 250.
Расход 80 остался один.
У West нет строк с меткой
cost, поэтому в этой ячейке
пропуск.
Соберите таблицу продаж: столбец
dept, столбец channel
и столбец amount так, чтобы
один отдел встречался в одном
канале несколько раз. Получите
сводную с суммой amount
по отделам в строках и каналам
в столбцах. Выведите её.
Создайте длинную таблицу оценок:
class_id, topic
и points с дублями пар
класс-тема. Сведите баллы суммой
в таблицу с классами в индексе
и темами в заголовках. Выведите
результат.
Из словаря со столбцами site,
event и hits соберите
таблицу, где один сайт и один
тип события повторяются. Постройте
сводную с суммой просмотров.
Выведите таблицу.