打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
pandas的rolling函数

原文链接 :http://www.wangluoshenghuo.com/2019/04/12/pandas%E7%9A%84rolling%E5%87%BD%E6%95%B0/

pandas的新版本rolling函数已经修改,而网上大部分都是老版本的解释。我想python2基本上面临淘汰的命运,学习新的rolling函数对你我都有好处。

什么是rolling window?

翻译成中文就是滑动,移动的窗口的意思,对于一组数据,比如一年的工商银行的每日股票数据,我们要分析它的趋势,但全年的数据波动明显太大,并且与历史的数据关联不大,有没有方法解决这个问题?

答案是有,我们可以定义一段时间的数据做为参考,比如一周或一个月,而每天有5天在交易,我就可以设置一个窗口,把这5天的数据做一个平均,这样5天波动的数据就会成为一个数据点,而第六天的数据会成为第二天到第六天的平均,这样一直循环下去,你会得到一组新的数据,比原数据更平滑,你也可以看成把情绪波动的价格做了回归。

下面是rolling函数和它的参数。

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)

里面的window就是窗口的大小。

我们举个例子,便于大家理解,取一年的深圳000001股票每天的数据。

df = pro.daily(ts_code=’000001.SZ’, start_date=’20180401′, end_date=’20190401′) #取一年的股票数据。

df[‘close’].head(10) #查看前10天的收盘价格

0 13.18
1 12.82
2 12.22
3 12.38
4 12.10
5 12.11
6 12.59
7 12.69
8 12.75
9 12.79
Name: close, dtype: float64
df[‘close’].rolling(5).mean().head(10)#使用rolling函数,window取值为5,代表5天。同样取前10天的数据,我们发现前面4个数据是NaN,而第5天的是前面5天的平均。 第六天是第二天到第六天的平均。

0 NaN
1 NaN
2 NaN
3 NaN
4 12.540
5 12.326
6 12.280
7 12.374
8 12.448
9 12.586
Name: close, dtype: float64
df[‘close’][0:5].mean()

12.540000000000001
df[‘close’][1:6].mean()

12.326

通过上面的例子,可以看到rolling函数的参数window的作用。我们在看看rolling函数其他参数的作用。

min_periods : 参数的数值是整数,缺省无。窗口中需要有值的最小观察次数(否则结果为na)。对于由偏移量指定的窗口,最小时段将默认为1。否则,最小时段将默认为窗口大小。

center : 参数的是布尔值 , 缺省为False,设置标签在窗口的中心。

win_type : 参数为字符串, 缺省为None提供一个窗口类型. 如果是None,也就是缺省,全部的点都平均加权.

win——type的类型:
boxcar
triang
blackman
hamming
bartlett
parzen
bohman
blackmanharris
nuttall
barthann
kaiser (needs beta)
gaussian (needs std)
general_gaussian (needs power, width)
slepian (needs width).
具体这些类型的使用,参考: scipy.signal window functions.

on:参数为字符串,可选,对于数据帧,计算滚动窗口而不是索引的列

axis:参数为0或1,默认为0,0为按列,1为按行

close:参数为字符串,默认无,在“right”、“left”、“both”或“neither”终结点上关闭间
隔。对于基于偏移量的窗口,它默认为“left”。对于固定窗口,默认为“both”。

在使用rolling函数后,我们还可以使用下面的统计方法对数据进行汇聚,比如:

rolling.count()计算非空观察数

rolling. sum()值的总和

rolling. mean()平均值

rolling. median()计算中值

rolling. min()得到最小值

rolling. max()得到最大值

rolling. std()求贝塞尔修正样本标准差

rolling. var()求无偏方差

rolling. skew()样本偏度

rolling. kurt()样本峰度

rolling. quantile()样本分位数(参数值为百分比)

rolling. apply()这个自己可以定义函数来灵活运用。

rolling. cov()无偏协方差在数据处理中用于衡量两个变量的总体误差。

rolling. corr()相关系数, 它是研究变量之间线性相关程度的量

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
pandas 数据规整
从数据清洗到机器学习:Python缺失值处理指南
pd.DataFrame()函数解析(最清晰的解释)
Python pandas用法
python pandas消除空值和空格的混淆
Pandas 合并数据集
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服