在数据分析时,特别是在分析时间序列数据时,常会需要对一个序列进行固定长度窗口的滚动计算和分析,比如计算移动均线。只要是需要根据一个时序得到一个新的时序,就往往需要进行窗口滚动。在pandas中,DataFrame和Seies都有一个针对滚动窗口的函数,叫做rolling()。其具体的参数为:DataFrame.rolling(windowmin_periods=Nonecenter=Falsewin_type=Noneon=Noneaxis=0closed=None)

其中参数window可以为一个正整数或者一个offset(可以认为是时间区间长度),通过这个参数设置窗口长度;min_periods表示窗口中需要的最小的观测值,如果窗口中的成员个数少于这个设定的值,则这个窗口经过计算后就会返回NaN,比如,如果min_periods设为3,但当前的窗口中只有两个成员,那么该窗口对应的位置就会返回空值;center参数如果设为True,表示在取窗口覆盖的区间时,以当前label为中心,向两边取,若为False,则表示以当前label为窗口的最右侧,向左侧取,默认为False,要注意的是,当为True时,如果窗口长度为奇数,则中心位置很好确定,就是最中间的位置,但是如果长度为偶数,则默认中心位置为中间偏右的那一个位置;win_type参数表示不同的窗口类型,可以通过这个参数给窗口成员赋予不同的权重,默认为等权重;on参数表示指定对某一列进行rolling,而不是默认的对index进行rolling,要注意的是,当指定on参数时,指定的列必须是时间序列,不然rolling函数就会失效。

下面看一个简单的例子。下面的例子中,当窗口长度为3,设min_periods为2时,可知结果中第一个元素为NaN,因为第一个窗口只有一个值1,由于min_periods为2,所以至少需要包含两个数才行,故第一个值为空值,从第二个元素开始才有非空值,这就是min_periods参数的含义。当设置center为True时,如果窗口长度为偶数4,比如对于一个窗口[a,b,c,d],则中心值为中心偏右的那个位置,就是c,故此时第1个窗口覆盖的元素为1和2,所以和为3,如下所示。

import pandas as pd
import numpy as np
df=pd.DataFrame([1,2,3,5],columns=['a'])
dfa
0   1
1   2
2   3
3   5df.rolling(3,min_periods=2).sum()a
0   NaN
1   3.0
2   6.0
3   10.0df.rolling(4,min_periods=2,center=True).sum()a
0   3.0
1   6.0
2   11.0
3   10.0

rolling函数返回的是window对象或rolling子类,可以通过调用该对象的mean(),sum(),std(),count()等函数计算返回窗口的值,还可以通过该对象的apply(func)函数,通过自定义函数计算窗口的特定的值,具体可看文档。

从以上可以看出,rolling的窗口可以向前取值,向两边取值,但是没有向后取值,实际上只需要把原序列倒序排列后再向前取值就可以实现向后取值。下面我们再讲一下expanding函数,其为DataFrame.expanding(min_periods=1center=Falseaxis=0),其中参数的意义和rolling一样,只是其不是固定窗口长度,其长度是不断的扩大的。

pandas中的滚动窗口rolling函数和扩展窗口expanding函数相关推荐

  1. python中多重if语句用法_python – 在Pandas中使用Apply使用多个if语句的Lambda函数

    我试图根据像这样的数据框中的人的大小来推断分类: Size 1 80000 2 8000000 3 8000000000 ... 我希望它看起来像这样: Size Classification 1 8 ...

  2. pandas用均值填充nan_python – 如何用pandas中的滚动平均值填充nan值

    这应该工作: input_data_frame[var_list]= input_data_frame[var_list].fillna(pd.rolling_mean(input_data_fram ...

  3. 独家|图说Pandas中旋转和重塑函数

    作者:Jay Alammar 翻译:张振东 本文多图例,建议阅读5分钟. 本文通过图例的方式,举例说明了pandas中旋转(pivot)和重塑(reshape)函数的实现方式. 我喜欢使用python ...

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

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

  5. pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性

    pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations).例如,计算两种商品销售额之间的3个月的滚动相关性 目录

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

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

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

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

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

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

  9. pandas计算滑动窗口中的最小值实战(Rolling Minimum in a Pandas Column):计算单数据列滑动窗口中的最小值、计算多数据列滑动窗口中的最小值

    pandas计算滑动窗口中的最小值实战(Rolling Minimum in a Pandas Column):计算单数据列滑动窗口中的最小值.计算多数据列滑动窗口中的最小值 目录

最新文章

  1. 百题大冲关系列课程更新啦!这次是 Golang
  2. SAR成像(七):RD成像算法
  3. 越来越多优秀的老员工辞职,怎么办?
  4. linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题)
  5. 使用ffmpeg推流拉流
  6. c语言城市交通灯优化,城市智能交通灯系统(本科)毕业论文.doc
  7. 2022暑期学校——简单实现2021年电子设计竞赛国赛题目
  8. 畅购商城_第9章SpringSecurity整合Oauth2
  9. 教妹学Java:深入浅出之美团技术团队解析过的 String.intern
  10. 显意识和潜意识话题引发的深入思考
  11. 牛客网解题-2017腾讯秋招笔试编程题练习卷
  12. 18岁少年盗取1500万日元萌乃币, 逼交易所关停, 引发日本史上第一次加密币盗窃法律诉讼...
  13. Python 分析近2000条“数据分析”相关岗位招聘信息
  14. SANER 2018 论文阅读- Dissection of a Bug Dataset: Anatomy of 395 Patches from Defects4J
  15. Pytorch - Illegal instruction
  16. 第 2-4 课:表格组件详解(Table 和 Data Tables)
  17. android编辑框禁用emoji表情和颜文字
  18. 小米10至尊纪念版和华为Mate30pro哪个好
  19. matlab粒子群加约束条件_matlab粒子群编程,等式约束如何加入
  20. 回退git add操作

热门文章

  1. Pycharm Setting Python Interpreter
  2. Typora编辑MD文档图片失效的问题解决
  3. 图像语义分割入门:FCN/U-Net网络解析
  4. 2012年5月SAT香港真题解析
  5. Python图像增强
  6. 【数据分析】黑色星期五(代码2)销售额分析1、2
  7. sklearn中predict_proba用法(注意和predict的区别)
  8. tcpdump man 手册页的详细中文翻译
  9. 启发式搜索: A*算法
  10. Linux Update