Закажи экспресс-аудит своего дела онлайн всего за 199 ₽
и получи рекомендации по улучшению - Жми сюда !

5 полезных скриптов на Python для анализа временных рядов

Данные временных рядов широко используются в финансах, операционной деятельности, инженерии и исследованиях. Эти пять скриптов на Python охватывают задачи анализа, которые встречаются довольно часто.

5 полезных скриптов на Python для анализа временных рядов

# Введение

Работа с данными временных рядов включает в себя целый ряд задач. Исходные данные поступают с нерегулярными интервалами и требуют передискретизации. Аномальные пики необходимо выявлять до того, как они исказят результаты последующего анализа. Тренды и сезонные закономерности необходимо отделять от шума. А когда у вас несколько рядов, понимание того, как они связаны друг с другом, требует большего, чем просто беглый визуальный осмотр.

Эти пять скриптов на Python решают распространенные задачи обработки временных рядов. Они разработаны для работы со стандартными CSV-файлами или файлами Excel, обеспечивают корректный вывод и просты в настройке для различных наборов данных.

Все скрипты можно найти на GitHub .

# 1. Передискретизация и агрегирование нерегулярных временных рядов

// Болевая точка

Данные временных рядов из реального мира редко поступают с равномерными интервалами. Показания датчиков, журналы транзакций и потоки событий содержат пробелы, дубликаты и несогласованные временные метки. Перед проведением любого осмысленного анализа данные необходимо привести к единой частоте.

// Что делает скрипт

Принимает CSV-файл или файл Excel, содержащий столбец с датами и временем, а также один или несколько столбцов со значениями, выполняет передискретизацию до указанной вами частоты и применяет агрегатные функции к каждому столбцу. Заполняет или отмечает пробелы и записывает чистый выходной файл с кратким описанием внесенных изменений.

// Как это работает

Скрипт анализирует столбец datetime с помощью pandas , устанавливает его в качестве индекса и использует функцию resample() с настраиваемыми строками частоты. Методы агрегирования для каждого столбца определены в конфигурации, поэтому для столбца температуры может использоваться среднее значение, а для столбца продаж — сумма. Пропущенные интервалы после перевыборки обрабатываются с помощью прямого заполнения, интерполяции или явного указания NaN в зависимости от ваших настроек. В отчете о пробелах перечислены все интервалы, в которых данные отсутствовали в исходных данных.

Получите скрипт для передискретизации временных рядов

# 2. Выявление аномалий во временных рядах данных

// Болевая точка

Отдельный аномальный всплеск или падение во временном ряду может исказить средние значения, нарушить работу последующих моделей и замаскировать реальные тенденции. Выявление таких точек вручную путем сканирования графиков или исходных значений нецелесообразно при любом значительном объеме данных.

// Что делает скрипт

Программа сканирует один или несколько числовых столбцов в файле временного ряда и отмечает точки данных, выходящие за пределы ожидаемых значений, используя один из трех методов обнаружения: z-оценка, межквартильный размах (IQR) или скользящая статистика. В результате создается аннотированный файл с отмеченными аномалиями и отдельный сводный отчет.

// Как это работает

Метод z-оценки отмечает точки, где стандартизированное значение превышает настраиваемый порог (по умолчанию ±3). Метод межквартильного размаха (IQR) отмечает точки, выходящие за пределы 1,5× межквартильного размаха. Метод скользящего среднего вычисляет скользящее среднее и стандартное отклонение в настраиваемом окне и отмечает точки, которые значительно отклоняются от локального контекста. Это полезно для рядов с выраженными трендами или сезонностью. Все три метода можно запускать одновременно; в столбце выходных данных указывается, какой метод отметил каждую точку. Дополнительный флаг —plot сохраняет график для каждого столбца с выделенными аномалиями.

Получите скрипт детектора аномалий

#3. Разложение ряда на тренд, сезонность и остатки

// Болевая точка

Временной ряд обычно представляет собой комбинацию нескольких компонентов: долгосрочного тренда, повторяющегося сезонного паттерна и нерегулярного остаточного шума. Анализ ряда в целом затрудняет четкое понимание какого-либо отдельного компонента.

// Что делает скрипт

Применяет классическое разложение временных рядов к числовому столбцу, разделяя наблюдаемый ряд на трендовую, сезонную и остаточную составляющие. Поддерживает как аддитивные, так и мультипликативные модели разложения. Экспортирует каждую составляющую в виде столбца в выходной файл и сохраняет многопанельную диаграмму.

// Как это работает

Скрипт использует функцию statsmodels.tsa.seasonal.seasonal_decompose() для целевого столбца после передискретизации до постоянной частоты, если это необходимо. Период разложения настраивается. Аддитивное разложение подходит для рядов, где сезонные колебания имеют приблизительно постоянную величину; мультипликативное — для рядов, где они масштабируются в зависимости от уровня тренда. Выходной файл Excel содержит исходный ряд вместе с тремя извлеченными компонентами. Сохраненный график отображает все четыре панели в виде стека.

Получите скрипт разложения временного ряда

# 4. Прогнозирование с использованием сезонной авторегрессионной интегрированной скользящей средней

// Болевая точка

Создание прогноза на основе временного ряда обычно включает в себя выбор модели, настройку параметров и этапы проверки, для правильного выполнения которых требуются статистические знания. Каждый раз начинать все с нуля отнимает много времени, а неформальный подход приводит к прогнозам, которым трудно доверять или которые трудно воспроизвести.

// Что делает скрипт

Программа строит модель сезонной авторегрессионной интегрированной скользящей средней (SARIMA) на основе столбца временного ряда, генерирует прогноз на настраиваемое количество периодов и записывает результаты в выходной файл, содержащий значения прогноза, доверительные интервалы и основные показатели точности для отложенного периода валидации. При необходимости автоматически выбирает параметры модели с использованием минимизации информационного критерия Акаике (AIC).

// Как это работает

Скрипт использует statsmodels.tsa.statespace.sarimax.SARIMAX для подгонки модели. При установке параметра —auto-order он выполняет облегченный поиск по сетке в настраиваемом диапазоне параметров ARIMA и сезонных параметров, выбирая комбинацию с наименьшим значением AIC. Ряд разбивается на обучающую выборку и отложенную тестовую выборку, количество периодов которой можно настроить. Точность на тестовой выборке оценивается с помощью средней абсолютной ошибки (MAE) и среднеквадратичной ошибки (RMSE) перед повторной подгонкой окончательной модели на весь ряд для получения прогноза на будущее. Результаты включают точечный прогноз и 95% доверительные интервалы. Сохраняется график прогноза, показывающий исторический ряд, фактические значения за тестовый период по сравнению с прогнозами, а также прогноз на будущее с доверительными интервалами.

Получите скрипт прогнозирования SARIMA

# 5. Сравнение нескольких временных рядов

// Болевая точка

При работе с несколькими связанными временными рядами — различными продуктами, регионами, датчиками или показателями — понимание того, как они движутся вместе, требует большего, чем простое отображение их на одном графике. Корреляционный анализ, анализ запаздывающих связей и согласованные сводные статистические данные требуют вычислений, и выполнение этих вычислений для множества пар рядов быстро становится громоздким.

// Что делает скрипт

Программа принимает файл с несколькими столбцами временных рядов, выравнивает их по общей частоте и создает многовкладочный сравнительный отчет, охватывающий попарные корреляции, анализ запаздывания (кросс-корреляция до настраиваемого запаздывания) и сводную статистическую таблицу. Для пар с наибольшей корреляцией генерируются диаграммы.

// Как это работает

Скрипт использует pandas для выравнивания всех столбцов по общему индексу даты и времени после перевыборки. Вычисляются попарные корреляции Пирсона и Спирмена, которые записываются на вкладку матрицы корреляций. Для каждой пары вычисляется кросс-корреляция до настраиваемого максимального лага, определяя лаг, при котором каждая пара достигает пика, что полезно для поиска опережающих/запаздывающих связей. Вкладка «Сводка» включает среднее значение, стандартное отклонение, минимум, максимум и направление тренда (положительный/отрицательный наклон линейной аппроксимации) для каждого ряда. Для пяти пар с наибольшей корреляцией создается линейный график с двумя осями на отдельной вкладке графиков.

Получите скрипт для сравнения нескольких серий

# Завершение

Эти пять скриптов охватывают основные задачи, связанные с работой с данными временных рядов. Они предназначены для использования как по отдельности, так и последовательно: сначала передискретизация, обнаружение аномалий, разложение, прогнозирование, а затем сравнение данных по рядам.

Для начала загрузите скрипт, который планируете использовать, и установите все зависимости, перечисленные в его файле README. Затем обновите раздел конфигурации в верхней части скрипта, чтобы он соответствовал вашим конкретным данным и названиям столбцов. Перед запуском на полном наборе данных протестируйте скрипт на небольшой выборке, чтобы убедиться в правильности выходных данных. Как только вы будете удовлетворены результатами, вы можете запланировать запуск или интегрировать его в существующий конвейер обработки данных.

Удачного анализа!

Бала Прия С. — разработчик и технический писатель из Индии. Ей нравится работать на стыке математики, программирования, анализа данных и создания контента. В сферу её интересов и компетенции входят DevOps, анализ данных и обработка естественного языка. Она любит читать, писать, программировать и пить кофе! В настоящее время она работает над изучением и распространением своих знаний среди сообщества разработчиков, создавая учебные пособия, руководства, аналитические статьи и многое другое. Бала также создает увлекательные обзоры ресурсов и обучающие материалы по программированию.

Источник: www.kdnuggets.com

✅ Найденные теги: 5, Python, Анализа, Временных, новости, Полезных, Скриптов

Добавить комментарий

Нет других записей в этой рубрике.

Новости других рубрик

Архив рубрики ~Лента новостей~: Apple заявляет, что иск Epic не должен менять правила App Store для всех разработчиков. Архив рубрики ~Лента новостей~: Водить полезно для здоровья Архив рубрики ~Лента новостей~: Карманный компьютер OneXPlayer X1 Pro обновился до процессора Ryzen AI 9 HX 470 Архив рубрики ~Лента новостей~: Принципы построения колоды для писателей: как создать эффективный инструмент для творчества Архив рубрики ~Лента новостей~: Все в режиме реального времени занимаются вопросами безопасности ИИ — даже Google. Архив рубрики ~Лента новостей~: Структура с дифференциальной приватностью для получения информации об использовании чат-ботов на основе ИИ. Архив рубрики ~Лента новостей~: Компании Cepheid и Oxford Nanopore расширяют партнерство, Revvity запускает новую платформу и многое другое. Архив рубрики ~Лента новостей~: Принципы работы современного ИИ: глубокое обучение и трансформеры