#python #pandas
#питон #панды #python #pandas
Вопрос:
У меня есть фрейм данных ( df
), который выглядит как:
A B C D
date
2014-02-25 2.41 1.0 20712.0 324.90415
2014-02-26 2.41 1.0 11400.0 324.90415
2014-02-27 2.40 1.0 4370.0 323.55600
2014-02-28 2.37 1.0 51943.0 319.51155
2014-03-03 2.40 1.0 27902.0 323.55600
: : : :
2015-03-16 2.39 1.0 18059.0 322.20785
2015-03-17 2.40 1.0 24346.0 323.55600
2015-03-18 2.35 1.0 344171.0 316.81525
2015-03-19 2.35 1.0 15247.0 316.81525
2015-03-20 2.35 1.0 90217.0 316.81525
Я хотел бы рассчитать скользящую дисперсию для столбца A за последние 5 дат (2015-03-16 — 2015-03-20), оглядываясь назад на последние 260 дней для каждого расчета.
Я вижу, что для вычисления дисперсии я могу использовать df['A'].var()
. Я мог бы создать новый фрейм данных, который содержал бы только последние 260 дней, но мне было интересно, есть ли более элегантный способ вычислить разницу в 260 дней для последних 5 дат в фрейме данных для столбца A?
Комментарии:
1. Вы смотрели на .rolling() ?
2. Спасибо, да, но не смог понять, как использовать rolling, чтобы просматривать только вычисляемые отклонения только за последние 5 дат
Ответ №1:
Попробуй:
variance = df.A.rolling(260).var()
что дает вам отклонения для всех данных. Затем вы можете сделать
variance[-5:]