原文链接 :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()相关系数, 它是研究变量之间线性相关程度的量

pandas的rolling函数相关推荐

  1. 使用Pandas的rolling函数计算滚动平均值(rolling average with Pandas rolling)、seaborn使用lineplot函数可视化时间序列数据、并添加滚动平均值

    使用Pandas的rolling函数计算滚动平均值(rolling average with Pandas rolling).seaborn使用lineplot函数可视化时间序列数据(time ser ...

  2. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max).例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值 目录

  3. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动计数个数(rolling count)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额计数个数

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动计数个数(rolling count).例如,计算某公司的多个店铺每N天(5天)的滚动销售额计数个数 目录

  4. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std).例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差 目录

  5. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum).例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和 目录

  6. pandas使用groupby函数计算dataframe数据中每个分组的滚动统计值(rolling statistics)的语法:例如分组的N天滚动平均值、滚动中位数、滚动最大最小值、滚动加和等

    pandas使用groupby函数计算dataframe数据中每个分组的滚动统计值(rolling statistics)的语法:例如分组的N天滚动平均值.滚动中位数.滚动最大最小值.滚动加和等 目录

  7. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最小值(rolling min)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最小值

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最小值(rolling min).例如,计算某公司的多个店铺每N天(5天)的滚动销售额最小值 目录

  8. pandas中的滚动窗口rolling函数和扩展窗口expanding函数

    在数据分析时,特别是在分析时间序列数据时,常会需要对一个序列进行固定长度窗口的滚动计算和分析,比如计算移动均线.只要是需要根据一个时序得到一个新的时序,就往往需要进行窗口滚动.在pandas中,Dat ...

  9. 用rolling函数构建布林线

    1.布林线(Bollinger Band) 布林线是根据统计学中的标准差原理设计出来的一种非常实用的技术指标.它由三条轨道线组成, 其中上下两条线分别可以看成是价格的压力线和支撑线,在两条线之间是一条 ...

最新文章

  1. 传输层TCP/UDP协议
  2. OpenCV3实现人脸识别(一)——基于OpenCV3级联分类器实现人脸检测与眼睛检测
  3. Qt 进程 QProcess
  4. 【年终总结】2019年有三AI NLP做了什么,明年要做什么?
  5. 【opencv系列08】OpenCV4.X图像融合操作
  6. 调查问卷 | 中国云原生用户调研,邀您参与!
  7. javascript setinterval 正确的语法
  8. 1603 限高二叉排列树(计数DP)
  9. iScreenLocker 3.1.8 安卓锁屏通知--苹果一样的体验
  10. QT for android 比较完美解决 全屏问题
  11. 怎么配置mysql数据源_mysql怎么样配置ODBC数据源
  12. 关于Redis在windows上运行及fork函数问题
  13. 西门子s7-200smart——2.cpu选型
  14. 【新书推荐】杰夫·惠勒:帝泉传奇系列(共3册)
  15. Uncle-黄,恍恍惚惚的面经 -- 1(初级Java)
  16. Android混合开发(一)——移动端与前端交互之JSBridge引入
  17. OCP、Avalon、Wishbone、IBM Core Connect
  18. Java常用术语解释
  19. 自律-克服不良习惯读后感
  20. 快速理解 WAL 机制,架构师必备技能!「建议收藏!!」

热门文章

  1. Jbuilder 配置常见问题的处理
  2. 常用Java开发工具
  3. 众多流行软音源素材一键即可获取
  4. 【vim】系统剪切板、vim寄存器之间的复制粘贴操作命令?系统剪切板中的内容复制粘贴到命令行?vim文本中复制粘贴到命令行
  5. RTL8723驱动移植
  6. pwnfunction xssgame-easy writeup
  7. 天猫好房双11造节 入局正当时
  8. opencv 图像拼接stitcher
  9. 企业微信SaaS服务案例分析
  10. [系统安全] PE文件格式详解1