Pandas 是一个强大的分析结构化数据的工具,它基于 Numpy(提供高性能的矩阵运算三方库),是 Python 数据挖掘和数据分析领域的事实标准三方库。
这里有很全面的Pandas教程:pandas 教程,该教程不需要去先学习 python 和 numpy 库。
pandas 时间类型移动窗口
点击查看代码
dft = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]},
index=pd.date_range('20130101 09:00:00',
periods=5,
freq='s'))
dft
B
2013-01-01 09:00:00 0.0
2013-01-01 09:00:01 1.0
2013-01-01 09:00:02 2.0
2013-01-01 09:00:03 NaN
2013-01-01 09:00:04 4.0
dft.rolling(2).sum()
B
2013-01-01 09:00:00 NaN
2013-01-01 09:00:01 1.0
2013-01-01 09:00:02 3.0
2013-01-01 09:00:03 NaN
2013-01-01 09:00:04 NaN
dft.rolling(2, min_periods=1).sum()
B
2013-01-01 09:00:00 0.0
2013-01-01 09:00:01 1.0
2013-01-01 09:00:02 3.0
2013-01-01 09:00:03 2.0
2013-01-01 09:00:04 4.0
通过rolling()函数与聚合函数的拼接,组成新的函数,可以更方便地实现窗口函数的功能;
这种用法,功能强大,代码简单,所有参数的设置基本一致;
列举如下
rolling_count() 计算各个窗口中非NA观测值的数量
rolling_sum() 计算各个移动窗口中的元素之和
rolling_mean() 计算各个移动窗口中元素的均值
rolling_median() 计算各个移动窗口中元素的中位数
rolling_var() 计算各个移动窗口中元素的方差
rolling_std() 计算各个移动窗口中元素的标准差
rolling_min() 计算各个移动窗口中元素的最小值
rolling_max() 计算各个移动窗口中元素的最大值
rolling_corr() 计算各个移动窗口中元素的相关系数
rolling_corr_pairwise() 计算各个移动窗口中配对数据的相关系数
rolling_cov() 计算各个移动窗口中元素的的协方差
rolling_quantile() 计算各个移动窗口中元素的分位数
除了支持聚合函数,通过rolling().apply()方法,还可以在移动窗口上使用自己定义的函数,实现某些特殊功能;唯一需要满足的是,在数组的每一个片段上,函数必须产生单个值;参考https://www.jianshu.com/p/b8c795345e93
pandas Series.expanding用法及代码示例
pandas.DataFrame.expanding函数方法的使用
用法:
Series.expanding(self, min_periods=1, center=False, axis=0)
- expanding()函数的参数,与rolling()函数的参数用法相同;该窗口可生成该统计的值以及该时间点之前所有可用的数据。
- rolling()函数,是固定窗口大小,进行滑动计算,expanding()函数只设置最小的观测值数量,不固定窗口大小,实现累计计算,即不断扩展;也就是说当rolling()函数的参数window=len(df)时,实现的效果与expanding()函数是一样的。
- expanding().sum()函数,类似cumsum()函数的累计求和,其优势在于还可以进行更多的聚类计算;
参考;
Pandas进阶之窗口函数rolling()和expanding()