Высокочастотные котировки акций
Высокочастотные данные о ценах акций хорошо описываются процессом MA(1), поэтому они представляют собой отличный пример применения моделей из этой главы.
Датафрейм intraday содержит внутридневные котировки акций Sprint (тикер «S») за 1 сентября 2017 года с частотой дискретизации одна минута. Фондовый рынок работает 6,5 часа (390 минут) — с 9:30 до 16:00.
Прежде чем анализировать данные временного ряда, их нужно немного привести в порядок — этим вы займётесь в этом и двух следующих упражнениях. Посмотрев на первые строки, вы заметите несколько особенностей. Во-первых, заголовки столбцов отсутствуют. Данные пронумерованы не с 9:30 до 16:00, а от 0 до 390. Кроме того, первая дата выглядит необычно: «a1504272600». Число после буквы «a» — это Unix-время, то есть количество секунд, прошедших с 1 января 1970 года. Именно так этот набор данных разделяет внутридневные данные по дням.
Если посмотреть на типы данных, можно заметить, что столбец DATE имеет тип object — в данном случае это означает строку. Его нужно преобразовать в числовой тип, прежде чем заняться обработкой пропущенных значений.
Источник поминутных данных — Google Finance (подробнее о том, как были загружены данные, см. здесь).
Модуль datetime уже импортирован.
Это упражнение является частью курса
Анализ временных рядов на Python
Инструкции к упражнению
- Вручную замените первую дату на ноль с помощью
.iloc[0,0]. - Переименуйте два заголовка столбцов на
'DATE'и'CLOSE', присвоивintraday.columnsсписок с этими двумя строками. - Используйте атрибут
.dtypes(без скобок), чтобы посмотреть типы данных в каждом столбце. - Преобразуйте столбец
'DATE'в числовой тип с помощью функции pandasto_numeric(). - Сделайте столбец
'DATE'новым индексом датафреймаintraday, используя метод pandas.set_index(), которому нужно передать строку'DATE'(не весь столбец, а только название столбца).
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# import datetime module
import datetime
# Change the first date to zero
intraday.___ = 0
# Change the column headers to 'DATE' and 'CLOSE'
intraday.columns = ___
# Examine the data types for each column
print(intraday.dtypes)
# Convert DATE column to numeric
intraday['DATE'] = pd.to_numeric(____)
# Make the `DATE` column the new index
intraday = ____