Что происходит в коде?
Приведённый фрагмент — это простая, но довольно типичная подготовка данных для анализа временных рядов. Мы импортируем нужные библиотеки, настраиваем вывод, читаем CSV‑файл с данными о пассажирах, добавляем искусственный ряд и «сорём» в нём несколько аномалий.
- numpy, pandas, matplotlib – стандартный набор для числовой обработки и визуализации.
- scipy подключён, но в примере не используется – оставлено на случай дальнейшего анализа.
- torch проверяется лишь для определения наличия GPU; он нам сейчас не нужен.
- Данные загружаются из публичного CSV‑файла.
- Создаётся синтетический ряд, в который вручную встраиваются аномалии (значения в 2.2‑раз больше нормы).
- Все серии объединяются в один «панельный» дата‑фрейм
panel, готовый к дальнейшему исследованию.
Какие задачи решает такой набор данных?
Для большинства специалистов, работающих с бизнес‑метриками, основная болевая точка — это своевременное обнаружение отклонений, которые могут свидетельствовать о проблемах в процессах, ошибках сбора данных или новых рыночных трендах. На практике это выглядит так:
- Нужно быстро понять, «что пошло не так» в конкретный период.
- Требуется автоматизированный способ помечать аномалии без ручного кликания по графикам.
- Необходимо сравнивать несколько объектов (например, разные региональные подразделения) в одном наборе.
Практический план действий
Если вы попали в схожую ситуацию, следуйте этому чек‑листу.
- Шаг 1. Подготовьте данные. Убедитесь, что столбцы с датой имеют тип
datetime, а целевая переменная — числовую. Пример выше уже делаетparse_dates=["ds"]и приводитunique_idк строковому типу. - Шаг 2. Визуализируйте. Постройте простую линию
plt.plot(df["ds"], df["y"]). Если виден сезонный «колеблющийся» паттерн, значит дальше придётся учитывать его. - Шаг 3. Выберите метод детекции. Есть три уровня сложности:
- Шаг 4. Обучите и проверьте. Разделите данные на тренировочную часть (например, первые 80 %) и тестовую (оставшиеся 20 %). Оцените метрики
precision, recall, F1для найденных аномалий. - Шаг 5. Автоматизируйте. Запишите пайплайн в виде скрипта или Jupyter‑ноутбука, добавьте планировщик задач (cron, Airflow) — и ваши «чудо‑детекторы» будут работать без вашего вмешательства.
Мини‑пример: обнаружение выбросов через скользящее среднее
Для быстрого старта можно обойтись без внешних библиотек.
- Вычисляем скользящее среднее и стандартное отклонение за 12 месячий период (в примере уже заданы
H = 12иFREQ = "MS"). - Помечаем точки, выходящие за диапазон
mean ± 3*std.
Код выглядит так:
df['rolling_mean'] = df['y'].rolling(window=H).mean()
df['rolling_std'] = df['y'].rolling(window=H).std()
df['anomaly'] = ((df['y'] - df['rolling_mean']).abs() > 3 * df['rolling_std'])
print(df[df['anomaly']])
Он найдёт те же индексы 30, 75, 120, где мы вручную умножили значения на 2.2.
Куда дальше?
После того как базовый скрипт заработал, можно улучшать:
- Добавить сезонную декомпозицию (statsmodels.seasonal_decompose) — тогда аномалии будут искать только в остатке.
- Перейти к моделям, умеющим предсказывать будущее и оценивать отклонения от прогноза (Prophet, NeuralForecast).
- Интегрировать вывод в дашборд (Grafana, Streamlit) — чтобы бизнес‑пользователи видели тревоги в реальном времени.





















