在数据分析的过程中,经常用到对计算移动均值,使用rolling可以轻松实现这个功能~
rolling函数是一个用于时间序列分析的函数;
一、参数解析
首先,让我们来了解一下rolling的各个参数吧
DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None, step=None, method='single')
参数:
window :移动窗口的大小
min_periods :窗口中需要的最小观测值数量
center :将标签设置在窗口的中心。
win_type :提供一个窗口类型。
on : str, optional
axis:int或str,默认为0
closed :使区间在 “右”、”左”、”两者 “或 “两者 “的端点上关闭。
返回 :一个窗口或滚动的子类,用于特定的操作。
二、用法实例:
d1 = data.groupby(['日期'])['商品金额'].sum().reset_index(drop = False)
d1['m2_商品金额'] = d1['商品金额'].rolling(2).mean()
d1['m3_商品金额'] = d1['商品金额'].rolling(3).mean()
d1
结果显示:
使用center参数
d1['m3_c_商品金额'] = d1['商品金额'].rolling(3,center= True).mean()
比较m3_商品金额、m3_c_商品金额的值,m3_商品金额的值从第三行开始部位NAN,而m3_c_商品金额 的值从第二行开始不为NAN,相当于将整体的数据向上平移了,计算值位于中间位置。
综合实例
计算移动窗口观测值之和:
d1['sum_5'] =d1['商品金额'].rolling(5).sum()
d1
计算移动窗口最小值:
d1['min_3'] =d1['商品金额'].rolling(3).min()
d1
计算移动窗口均值累计、移动观测值之和累计:
d1['sum_cum_3'] =d1['商品金额'].rolling(3).sum().cumsum()
d1['m_cum_3'] =d1['商品金额'].rolling(3).mean().cumsum()
d1
计算指定数据列 累加值
三、与rolling()配合使用的常用函数包括:
count:返回移动窗口中非NA观测值的数量。
max:返回移动窗口的最小值。
min:返回移动窗口的最大值。
diff:返回观测值的第一个离散差。
mean:返回移动窗口的均值。
median:返回移动窗口的中位数。
round:返回保留指定位数的观测值。
sum:返回移动窗口中观测值的总和。
std:返回移动窗口的标准差。
var:返回移动窗口的方差。
corr:移动窗口的相关系数。
abs:返回观测值的绝对值。
cov:计算数据样本的协方差矩阵。
skew:样本值的偏度(三阶矩),即数据分布的对称性。
kurt:样本值的峰度(四阶矩),即数据在均值附近分布的集中度。
describe:给出样本的基本描述(基本统计量如均值、标准差等)。
apply:对移动窗口中的值进行函数计算。
agg:在指定的轴上实现一个或多个操作。
cumsum:依次给出前1、2、… 、n个数的和。
cumprod:依次给出前1、2、… 、n个数的积。
cummax:依次给出前1、2、… 、n个数的最大值。
cummin:依次给出前1、2、… 、n个数的最小值。
常用参数转载于:https://blog.csdn.net/halps/article/details/127281333