Задачи на groupby, agg и merge в pandas

Эта подборка помогает строить отчёты в pandas: менять уровень детализации через groupby, добавлять групповые признаки через transform и соединять таблицы через merge без неожиданных потерь и дублей.

Что означает одна строка

До группировки строка может означать покупку, после неё — клиента. Если соединить две таблицы с повторяющимся ключом, строк станет больше: получится сочетание совпадений. Сначала назовите ключ каждой таблицы, затем выбирайте агрегат и тип соединения.

Пример: сводка и справочник

import pandas as pd
orders = pd.DataFrame({"client": [1, 1, 2], "amount": [10, 20, 7]})
clients = pd.DataFrame({"client": [1, 2, 3], "name": ["A", "B", "C"]})
totals = orders.groupby("client", as_index=False).agg(total=("amount", "sum"))
report = clients.merge(totals, on="client", how="left",
                       validate="one_to_one", indicator=True)
print(report["_merge"].tolist())
print(float(report.loc[report["client"] == 1, "total"].iloc[0]))

Результат:

['both', 'both', 'left_only']
30.0

left сохранил всех клиентов, включая клиента без покупок. validate проверил уникальность ключей, а indicator показал отсутствие пары. Не заменяйте пропущенную сумму нулём, пока не определили смысл отсутствия данных.

Разделите навыки

Проблемные ключи сначала обработайте в практике очистки данных. Объединение таблиц в документации pandas. Для последовательного обучения — бесплатный курс NumPy и pandas.

pandas groupby и merge: задачи на отчёты и соединение таблиц