Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
21 Фев 2024
3 мин
3386

Как использовать Python для работы с временными рядами

Пройдите тест, узнайте какой профессии подходите

Узнайте, как использовать Python для анализа и прогнозирования временных рядов с помощью популярных библиотек Pandas и Statsmodels.

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

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

Библиотеки для работы с временными рядами в Python

Существует несколько библиотек в Python, которые предоставляют инструменты для работы с временными рядами:

  1. Pandas
  2. NumPy
  3. Statsmodels
  4. Prophet
  5. 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. 😊

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