Детектор аномалий в дневной выручке (rolling Z-score)

Senior Python E-commerce

Условие задания

**Контекст:** Задание senior-уровня с собеса в отдел data quality / monitoring. Нужно написать детектор, который находит «дни-аномалии» в дневной выручке магазина — такие, где выручка сильно отклоняется от ожидаемой.

**Данные:**

[см. код в задании]

**Задание:**

Написать функцию `detect_anomalies(df, window=28, z_threshold=3)`:

1. Для каждого дня считать **rolling** среднее и std за предыдущие N дней (исключая сам день — leak-free).
2. Вычислить **z-score** текущего дня относительно rolling статистик.
3. Если `|z| >= z_threshold` — пометить день как аномалию.
4. Дополнительно: разбить аномалии на `anomaly_high` (z >= 3) и `anomaly_low` (z <= -3).

**Вернуть:** оригинальный df + колонки `rolling_mean, rolling_std, z_score, anomaly_type` (values: 'normal', 'high', 'low').

Темы

pandas anomaly-detection rolling z-score monitoring

Подсказки

Все тестовые задания → ← Все задания