在移动窗口(可以带有指数衰减权数)上计算的各种统计函数也是一类常见于时间序列的数组变换。它们称为移动窗口函数,其中还包括那些窗口不定长的函数(如指数加权移动平均)。跟其他统计函数一样,移动窗口函数也会自动排除缺失值。「亲,如果笔记对您有帮助,收藏的同时,记得给点个赞、加个关注哦!感谢!」
「文中代码均亲测过,若有错误之处,欢迎批评指正,一起学习,一起成长!」
Series.rolling.mean()是其中最简单的一个,它接受一个TimeSeries或DataFrame以及一个window(表示期数):
In [14]: close_px.AAPL.plot()
Out[14]:
默认情况下,诸如Series.rolling.mean()这样的函数需要指定数量的非NA观测值。可以修改该行为以解决缺失数据的问题。其实,在时间序列开始处尚不足窗口期的那些数据就是个特例:
In [18]: prm=pd.Series.rolling(close_px.AAPL,250).mean()
In [19]: prm.plot()
Out[19]:
In [24]: appl_std250=pd.Series.rolling(close_px.AAPL,250,min_periods=10).mean()
In [25]: appl_std250[5:12]
Out[25]:
1990-02-08 NaN
1990-02-09 NaN
1990-02-12 NaN
1990-02-13 NaN
1990-02-14 7.964000
1990-02-15 7.967273
1990-02-16 7.962500
Freq: B, Name: AAPL, dtype: float64
In [26]: appl_std250.plot()
Out[26]:
要计算扩展窗口平均,可以将扩展窗口看做一个特殊的窗口,其长度与时间序列一样,但只需一期(或多期)即可计算一个值:
# 通过Series.rolling.mean()定义扩展平均
In [27]: expanding_mean=lambda x :Series.rolling(x,len(x),min_periods=1).mean()
对DataFrame调用Series.rolling.mean()(以及与之类似的函数)会将转换应用到所有的列上:
In [29]: pd.Series.rolling(close_px,60).mean().plot(logy=True)
Out[29]:
「亲,如果笔记对您有帮助,收藏的同时,记得给点个赞、加个关注哦!感谢!」
「文中代码均亲测过,若有错误之处,欢迎批评指正,一起学习,一起成长!」