Создать скользящую дисперсию из столбца фрейма данных

#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:]