Рубрики
Без рубрики

Анализ временной серии с пандами

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

Мы будем анализировать данные акций с Python 3, Pandas и Matplotlib. Чтобы полностью извлечь выгоду из этой статьи, вы должны быть знакомы с основы Pandas, а также библиотеки построения под названием MatPlotlib.

Данные временных серий

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

  • Измерение температур погоды
  • Измерение количества поездок такси в месяц
  • Прогнозировать цены на акции компании на следующий день

Вариации данных временных рядов

  • Вариация тренда: движется вверх или вниз в достаточно предсказуемом рисунке в течение длительного периода времени.
  • Вариация сезонности: регулярный и периодический; повторяется в определенный период, такой как день, неделя, месяц, сезон и т. Д.
  • Циклические вариации : соответствует циклам бизнеса или экономического «бузда», или является циклическим в какой-то другой форме
  • Случайные вариации : ошибочный или остаточный; Не подпадает под любые из вышеперечисленных трех классификаций.

Вот четыре вариации данных временных рядов визуализированы:

Импорт данных запаса и необходимые библиотеки Python

Чтобы продемонстрировать использование Pandas для анализа акций, мы будем использовать цены на акции Amazon с 2013 по 2018 год. Мы вытягиваем данные из Quandl, компания, предлагающая Python API для послуженного рыночных данных по La Carte. Файл CSV данных в этой статье может быть загружено из репозитория статьи.

Выпустите редактор по вашему выбору и введите следующий код, чтобы импортировать библиотеки и данные, соответствующие этой статье.

Пример кода для этой статьи можно найти на Репозиторий для воздушного блога на Github.

# Importing required modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Settings for pretty nice plots
plt.style.use('fivethirtyeight')
plt.show()

# Reading in the data
data = pd.read_csv('amazon_stock.csv')

Первый взгляд на цены акций Amazon

Давайте посмотрим на первые несколько столбцов набора данных:

# Inspecting the data
data.head()

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

data.drop(columns=['None', 'ticker'], inplace=True)
data.head()

Давайте теперь посмотрим на DataTypes различных компонентов.

data.info()

Похоже, что столбец даты рассматривается как строка, а не как даты. Чтобы исправить это, мы будем использовать Pandas to_dateTime () Функция, которая преобразует аргументы в даты.

# Convert string to datetime64
data['Date'] = data['Date'].apply(pd.to_datetime)
data.info()

Наконец, мы хотим убедиться, что столбец даты является столбцем индекса.

data.set_index('Date', inplace=True)
data.head()

Теперь, когда наши данные были преобразованы в желаемый формат, давайте посмотрим на его столбцы для дальнейшего анализа.

  • Открыть и Закрыть Столбец указывают на открытие и закрытие цены акций в определенный день.
  • Высокий и Низкий Столбцы обеспечивают самую высокую и самую низкую цену на акции в определенный день соответственно.
  • Объем Столбец рассказывает нам общий объем акций, торгуемых на определенный день.

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

data['Adj_Close'].plot(figsize=(16,8),title='Adjusted Closing Price')

Интересно, кажется, что Amazon был более или менее устойчивый рост своей цены на акции за окном 2013-2018 годов. Теперь мы будем использовать Pandas для анализа и манипулирования этими данными, чтобы получить представление.

Pandas для анализа временной серии

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

Манипулирование DateTime

Основные инструменты Python для работы с датами и временами проживают в встроенном datetime модуль. В пандах один момент времени представлен как панда. Timestamp И мы можем использовать datetime () Функция для создания DateTime. Объекты из строк в широком спектре форматов даты/времени. DateTimes взаимозаменяемы с панда. Timestamp Отказ

from datetime import datetime
my_year = 2019
my_month = 4
my_day = 21
my_hour = 10
my_minute = 5
my_second = 30

Теперь мы можем создать datetime Объект и свободно используйте его с пандами, учитывая приведенные выше атрибуты.

test_date = datetime(my_year, my_month, my_day)
test_date


# datetime.datetime(2019, 4, 21, 0, 0)

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

test_date = datetime(my_year, my_month, my_day, my_hour, my_minute, my_second)
print('The day is : ', test_date.day)
print('The hour is : ', test_date.hour)
print('The month is : ', test_date.month)

# Output

The day is :  21
The hour is :  10
The month is :  4

Для нашей цены на наличие набора данных, тип столбца индекса – DateTimeindex Отказ Мы можем использовать Pandas для получения минимальных и максимальных дат данных в данных.

print(data.index.max())
print(data.index.min())

# Output

2018-03-27 00:00:00
2013-01-02 00:00:00

Мы также можем рассчитать последнее местоположение даты и раннее местоположение индекса даты следующим образом:

# Earliest date index location
data.index.argmin()
#Output
1315
# Latest date location
data.index.argmax()
#Output
0

Время повторения

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

Библиотека Pandas имеет Resample () Функция, которая повторяет такие данные временных ряда. Метод повторной доступности в пандах похож на его группа по Способ по существу, по сути группировать в соответствии с определенным временем. Resample () Функция выглядит так:

data.resample(rule = 'A').mean()

Обобщить:

  • data.resample () используется для отрывки данных акций.
  • «A» обозначает частоту в год, и обозначает значения смещения, с помощью которых мы хотим повторно отменить данные.
  • Среднее () Указывает, что мы хотим среднюю цену акций в этот период.

Вывод выглядит так, с средней учетной записью, отображаемыми на 31 декабря каждого года

Ниже приведен полный список значений смещения. Список также можно найти в документации Panda.

Смещение псевдонимов для повторения времени

Мы также можем использовать время отбора проб к сюжетным графикам для определенных столбцов.

data['Adj_Close'].resample('A').mean().plot(kind='bar',figsize = (10,4))
plt.title('Yearly Mean Adj Close Price for Amazon')

Вышеуказанный строковый график соответствует среднему скорректированному цене закрытия Amazon на конец года на каждый год в нашем наборе данных.

Аналогичным образом, ежемесячная максимальная цена открытия на каждый год можно найти ниже.

Ежемесячное максимальное открытие цены на Amazon

Временной сдвиг

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

Продолжайте с переключением времени и посмотрите код в kite github repo.

Parul Pandey это евангелист на науке данных на H2O.ai и автор для воздушного блога.

Оригинал: “https://dev.to/kite/time-series-analysis-with-pandas-3472”