Короткий ответ
Перед выводом о реальном падении стоит последовательно проверить: не изменился ли объём и структура исходных данных (дубликаты, пропуски), не "потерялись" ли строки при merge/фильтрации, применяется ли тот же период и та же логика расчёта, что и в прошлый раз, и только после этого делать содержательный вывод.
Как это работает подробнее
типичный чек-лист включает: сравнение количества строк исходных данных за оба периода (df.shape, nunique по ключу), проверку доли пропусков в ключевых полях, проверку, не изменился ли результат merge по числу строк (размножение или потеря), и повторный просчёт метрики на "сырых" данных без промежуточных трансформаций, чтобы исключить ошибку в коде.
Пример кода
Пример на Python
import pandas as pd
current = pd.DataFrame({'date': pd.date_range('2024-02-01', periods=5), 'orders': [100, 98, 95, 10, 97]})
print(current)
print(current['orders'].pct_change())Что использовать на практике
- На практике. полезно держать под рукой "контрольные" агрегаты с предыдущего запуска отчёта (например, сохранённые в отдельном файле или таблице), чтобы быстро сравнивать не только итоговую метрику, но и промежуточные шаги расчёта; если расхождение находится на конкретном шаге пайплайна (например, после merge с таблицей пользователей), это резко сужает круг возможных причин.
- Проверка. резкий провал на четвёртый день (значение 10 против соседних ~95-100) стоит сначала сверить с количеством строк исходных данных за этот конкретный день — часто такой изолированный провал объясняется неполной выгрузкой данных за день, а не реальным падением заказов.
Подводные камни
- Частые ошибки. сразу формулируют бизнес-объяснение падения (сезонность, отток, конкуренты), не проверив код и данные на технические артефакты; меняют логику фильтрации или период сравнения между отчётами незаметно для себя (например, "последние 7 дней" в разные дни недели захватывают разное количество выходных), из-за чего сравнение оказывается некорректным ещё до содержательного анализа причин.