Содержание
После группировки пропала выручка: проверьте пустые ключи pandas
В исходной выгрузке сумма продаж сходится, а после группировки по категориям стала меньше. Перед поиском потерянного заказа проверьте, нет ли пустого значения в ключе группировки.
Почему строка может исчезнуть из итога
В документации pandas у DataFrame.groupby параметр dropna по умолчанию равен True. Строки с NA в ключах группировки исключаются. При dropna=False пропуски тоже образуют группу. Это свойство операции, а не доказательство отсутствия продажи.
Сохраните исходную область сверки
Работайте с копией одной выгрузки. Зафиксируйте период, состав операций, валюту и правила учёта возвратов. Нельзя сравнивать полный файл с группировкой, из которой заранее отфильтровали часть строк.
До расчёта убедитесь, что сумма заполнена и имеет числовой тип. Для точной денежной сверки можно подготовить суммы в целых минимальных единицах валюты. Не заменяйте неизвестную сумму нулём автоматически.
Проверьте строки и сумму отдельно
Ниже sales означает уже подготовленную таблицу ваших продаж. category является ключом категории, amount_minor содержит сумму в целых минимальных единицах одной валюты.
keys = ["category"]
missing_key = sales[keys].isna().any(axis=1)
unassigned = sales.loc[missing_key]
groups = sales.groupby(keys, dropna=False)
counts = groups.size()
amounts = groups["amount_minor"].sum()
print("Строки без ключа:", len(unassigned))
print("Сумма без ключа:", unassigned["amount_minor"].sum())
print("Строк до и после:", len(sales), counts.sum())
print("Сумма до и после:", sales["amount_minor"].sum(), amounts.sum())
Для нескольких ключей перечислите их в keys: пропуск хотя бы в одном тоже требует внимания. Проверка количества строк нужна наряду с суммой, поскольку положительные и отрицательные операции могут взаимно компенсироваться.
Решите, что делать с неопределённой категорией
Сохраните unassigned как список для исправления справочника. Не приписывайте этим строкам популярную категорию ради красивого отчёта. После исправления повторите группировку и обе сверки на той же области данных.
Если пустых ключей нет или контроль по-прежнему расходится, продолжите поиск в фильтрах, преобразованиях типов и предыдущих шагах обработки. Параметр dropna=False сохраняет строки при этой группировке, но не восстанавливает данные, потерянные раньше.
Комментарии 0