📅  最后修改于: 2023-12-03 15:03:28.722000             🧑  作者: Mango
在时间序列数据的应用中,数据点之间的时间间隔可能会不同。滚动平均是一种计算连续数据集的方法,其中每个数据集都包含固定大小的观测间隔。在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()函数,可以轻松地计算滚动统计信息,并且可以指定窗口大小和数据的滚动方向。