**Контекст:** Задание 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').
Структура для ориентира — реальные значения из эталонного решения.
daily = pd.DataFrame({
'date': pd.date_range('2025-01-01', '2026-04-21'),
'revenue': ..., # float, дневная выручка (~476 точек)
})
pandas anomaly-detection rolling z-score monitoring
Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «Python» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: pandas, anomaly-detection, rolling, z-score, monitoring.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 530+ Python задачи с проверкой через Pyodide, конспекты Python и pandas, AI мок-собеседование с разбором ваших ответов.
← Все задания