相信初学Pandas时间序列时,会遇到rolling函数,不知道该怎么理解,对吧?
让我们用最简单的例子来说明吧。
代码如下:
import pandas as pd
# 导入 pandas
index = pd.date_range('2019-01-01',periods=20)
#创建日期序列
data = pd.DataFrame(np.arange(len(index)),index=index,columns=['test'])
#创建简单的pd.DataFrame
data
#打印data
data['sum'] = data.test.rolling(3).sum()
#移动3个值,进行求和
data['mean'] = data.test.rolling(3).mean()
#移动3个值,进行求平均数
data['mean1'] = data.test.rolling(3,min_periods=2).mean()
#移动3个值,最小计数为2,进行求平均数,查看跟上面有何不同
我们看下结果吧
大家可以看到:
1.sum列和mean列分别为三个连续值(从当前值向前推两个,共计三个值)的求和/求平均值
2.mean列和mean1列区别在于:前者NaN值有2个,后者只有1个
简单了解后,我们补充相对复杂的解释:
DataFrame.rolling(window, min_periods=None, freq=None, center=False, win_type=None, on=None, axis=0, closed=None)
逐个介绍参数值:
1) window:表示时间窗的大小,通常为int,数值表示计算统计量的观测值的数量即向前几个数据,见上面例子中rolling(3)
2)min_periods:最少需要有值的观测点的数量,对于int类型,默认与window相等。若调整,则一般小于window值,见上面例子rolling(3,min_periods=2)
3)freq:从0.18版本中已经被舍弃。
4)center:是否使用window的中间值作为label,默认为false。只能在window是int时使用。让我们举例说明,如下截图所示,
没有看出来,我们再次举例,见截图如下:
这次大家应该看出来,center=True 的设定,会使得三个连续值(从当前值向前向后各推1个,共计3个值)求平均值
5)win_type:默认为None,一般不特殊指定
6)on:对于多列FrameData,用on来指定使用哪列(举例data.test,已经指定了)
7)closed:定义区间的开闭,即默认为right
8)axis:0--行,1---列
好了,希望能够给大家带来帮助,谢谢阅读。