Временные ряды — это последовательность точек данных, измеренных через равные промежутки времени. Работа с временными рядами является важной частью анализа данных, особенно в области финансов, погодных прогнозов и много других. В этой статье мы рассмотрим, как использовать Python для работы с временными рядами.
Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Библиотеки для работы с временными рядами в Python
Существует несколько библиотек в Python, которые предоставляют инструменты для работы с временными рядами:
- Pandas
- NumPy
- Statsmodels
- Prophet
- TimeSeriesSplit (из библиотеки scikit-learn)
Мы сосредоточимся на использовании Pandas и Statsmodels, так как они являются наиболее популярными и широко используемыми библиотеками для данной задачи.
Работа с временными рядами в Pandas
Pandas — это мощная и гибкая библиотека для работы с данными в Python. Она предоставляет специальный тип данных, называемый DateTimeIndex
, который предназначен для работы с временными рядами.
Загрузка данных
Для начала, давайте загрузим набор данных с временными рядами. Мы будем использовать функцию read_csv()
из библиотеки Pandas для загрузки данных из файла CSV.
import pandas as pd data = pd.read_csv('time_series_data.csv', parse_dates=['date'], index_col='date')
Индексация и срезы
Теперь, когда у нас есть данные с DateTimeIndex
, мы можем использовать различные методы для индексации и срезов данных:
# Выбор данных за определенный год data['2020'] # Выбор данных за определенный месяц data['2020-02'] # Выбор данных за определенный диапазон дат data['2020-02-01':'2020-02-10']
Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.
Ресемплирование данных
Ресемплирование данных — это процесс изменения частоты данных. Pandas предоставляет метод resample()
для ресемплирования данных:
# Ресемплирование данных по месяцам и вычисление среднего значения monthly_data = data.resample('M').mean()
Прогнозирование временных рядов с помощью Statsmodels
Библиотека Statsmodels предоставляет ряд статистических моделей для анализа и прогнозирования временных рядов. Одной из таких моделей является SARIMA (Seasonal Autoregressive Integrated Moving Average).
Создание и обучение модели SARIMA
import statsmodels.api as sm # Создание модели SARIMA model = sm.tsa.statespace.SARIMAX(data, order=(1, 1, 1), seasonal_order=(1, 1, 1, 12)) # Обучение модели results = model.fit()
На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.
Прогнозирование с помощью обученной модели
# Прогнозирование на 10 периодов вперед forecast = results.get_forecast(steps=10) # Получение доверительных интервалов для прогноза conf_int = forecast.conf_int()
Теперь вы знаете, как использовать Python для работы с временными рядами, а также основы прогнозирования с помощью модели SARIMA. Для дополнительного изучения рекомендуется ознакомиться с другими библиотеками и моделями, такими как Prophet от Facebook и TimeSeriesSplit из scikit-learn. 😊
Добавить комментарий