Короткий ответ
Нужно построить ежедневный ряд метрики вместе со вспомогательными показателями (например, долей пропусков, количеством событий по источнику) вокруг подозрительной даты и проверить, совпадает ли разрыв с резким изменением структуры данных, а не только самого значения метрики.
Как это работает подробнее
строят df.set_index('date').resample('D').agg(...) для получения дневного ряда метрики и сопутствующих характеристик (доля пропусков в ключевых полях, число записей по платформе/источнику); резкий "излом" ровно в день релиза или смены трекинга — сильный сигнал технической причины, а не органического изменения поведения пользователей.
Пример кода
question-135.py
import pandas as pd
df = pd.DataFrame({
'date': pd.date_range('2024-01-01', periods=6),
'events': [100, 105, 98, 500, 510, 495],
'missing_user_id': [0.01, 0.02, 0.01, 0.4, 0.41, 0.39]
})
daily = df.set_index('date')
print(daily)Что использовать на практике
- Практика. полезно сравнить структуру данных до и после даты излома — распределение по платформам, появление новых значений категориальных полей, изменение доли NaN в конкретном столбце; если на эту же дату приходится релиз приложения или смена версии API, это веский довод в пользу технической причины.
- Проверка. резкий рост events совпадает с резким ростом missing_user_id начиная с той же даты — это указывает на то, что скачок скорее связан с изменением логики сбора данных (например, новым источником событий без user_id), а не с органическим ростом активности.
Подводные камни
- Частая ошибка. сразу интерпретируют резкий скачок метрики как "реальное событие в бизнесе" (виральный рост, отток), не проверив технический контекст и журнал релизов; смотрят только на саму метрику без сопутствующих диагностических срезов, из-за чего причина остаётся неочевидной даже после обнаружения разрыва.