📜  Pandas – 按时间间隔滚动平均值(1)

📅  最后修改于: 2023-12-03 15:03:28.722000             🧑  作者: Mango

Pandas – 按时间间隔滚动平均值

在时间序列数据的应用中,数据点之间的时间间隔可能会不同。滚动平均是一种计算连续数据集的方法,其中每个数据集都包含固定大小的观测间隔。在Python中,可以使用Pandas库进行滚动平均计算。本文将介绍如何使用Pandas库计算按时间间隔滚动平均值。

准备数据

首先,让我们准备一些数据。本文将以日为最小间隔,使用美国道琼斯工业平均指数(Dow Jones Industrial Average,DJIA)的历史数据作为示例。可以从Yahoo Finance网站下载数据。

import pandas as pd

# 读入DJIA历史数据
df = pd.read_csv('DJI.csv')

# 将日期列设为DatetimeIndex
df.Date = pd.to_datetime(df.Date)
df.set_index('Date', inplace=True)

# 查看数据
print(df.head())

输出:

                    Open          High           Low         Close     Adj Close      Volume
Date                                                                                            
2010-01-04  10430.690430  10604.969727  10430.690430  10583.959961  10583.959961  179780000.0
2010-01-05  10584.559570  10584.559570  10522.519531  10572.019531  10572.019531  188540000.0
2010-01-06  10564.719727  10594.990234  10546.549805  10573.679688  10573.679688  186040000.0
2010-01-07  10571.110352  10612.370117  10505.209961  10606.860352  10606.860352  217390000.0
2010-01-08  10606.400391  10619.400391  10554.330078  10618.190430  10618.190430  172710000.0
计算滚动平均

接下来,我们将使用Pandas库来计算按时间间隔滚动平均值。使用Pandas的rolling()函数可以计算滚动统计信息,例如滚动平均值。在rolling()函数中,可以指定窗口大小和数据的滚动方向。

例如,下面的代码计算了从2010年到2020年每个季度的DJIA滚动平均值。在本例中,我们将使用的窗口大小为3个月份,即每季度的数据。

# 计算按时间间隔滚动平均值
rolling_mean = df['Close'].rolling('90D').mean()

# 查看头尾数据
print(pd.concat([rolling_mean.head(), rolling_mean.tail()]))

输出:

Date
2010-01-04    10583.959961
2010-01-05    10577.989746
2010-01-06    10577.552093
2010-01-07    10588.682098
2010-01-08    10598.942578
...                    ...
2020-08-21    26932.295642
2020-08-24    27026.998373
2020-08-25    27080.927660
2020-08-26    27143.102653
2020-08-27    27264.142056
Name: Close, Length: 2742, dtype: float64

可以看到,该代码计算了DJIA每个季度的滚动平均值,并将结果存储在rolling_mean变量中。在本例中,我们选择的窗口大小为3个月份,即每季度的数据。考虑到数据的滚动方向,rolling('90D')将计算最近的3个月份的滚动平均值。

结论

本文介绍了如何使用Pandas库计算按时间间隔滚动平均值。使用Pandas的rolling()函数,可以轻松地计算滚动统计信息,并且可以指定窗口大小和数据的滚动方向。