Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Васильев Ю. - Python для data science (Библиотека программиста) - 2023.pdf
Скачиваний:
7
Добавлен:
07.04.2024
Размер:
7.21 Mб
Скачать

Общие методы анализа временных рядов      215

в столбце — NaN, потому что цен за два предыдущих дня для первых двух значений временного ряда у нас нет.

Вычисление скользящего окна

Другой популярный метод анализа временных рядов — сравнение каждого значения со средним значением за n периодов. Это называется вычислением скользящего окна (rolling window calculation): вы создаете временное окно фиксированного размера и выполняете агрегированный расчет значений в пределах этого окна по мере его перемещения, или скольжения, по временному ряду. В случае с акциями можно использовать скользящее окно, чтобы найти среднюю цену закрытия двух предыдущих дней, а затем сравнить цену закрытия текущего дня с этим значением. Это даст представление о стабильности цены акций с течением времени.

Каждый объект pandas имеет метод rolling()для просмотра скользящего окна значений. Используем его в сочетании с shift()и mean()для нахождения средней цены акций Tesla за предыдущие два дня:

df['2daysAvg'] = df['Close'].shift(1).rolling(2).mean() print(df[['Close', '2daysAvg']])

В первой строке применяем shift(1) для сдвига точек данных в серии на один день назад, поскольку не хотим включать цену текущего дня в расчет среднего значения. Далее формируем скользящее окно с помощью функции rolling(2), которая для выполнения вычислений берет две последовательные строки. Наконец, вызываем метод mean() для расчета среднего значения для каждой пары последовательных строк в скользящем окне. Сохраняем результаты в новом столбце 2daysAvg, который выводим на экран вместе со столбцом Close. Итоговый датафрейм будет выглядеть так:

 

Close

2daysAvg

Date

 

 

2022-01-10 1058.11

NaN

2022-01-11 1064.40

NaN

2022-01-12

1106.21

1061.26

2022-01-13

1031.56

1085.30

2022-01-14

1049.60

1068.89

 

 

 

Цены в колонке 2daysAvg являются средними значениями двух предыдущих биржевых дней. Например, значение в строке с датой 2022-01-12 является средним значением цен за 2022-01-10 и 2022-01-11.