pandas中的滚动窗口rolling函数和扩展窗口expanding函数
在数据分析时,特别是在分析时间序列数据时,常会需要对一个序列进行固定长度窗口的滚动计算和分析,比如计算移动均线。只要是需要根据一个时序得到一个新的时序,就往往需要进行窗口滚动。在pandas中,DataFrame和Seies都有一个针对滚动窗口的函数,叫做rolling()。其具体的参数为:DataFrame.
rolling
(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=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=1, center=False, axis=0),其中参数的意义和rolling一样,只是其不是固定窗口长度,其长度是不断的扩大的。
pandas中的滚动窗口rolling函数和扩展窗口expanding函数相关推荐
- python中多重if语句用法_python – 在Pandas中使用Apply使用多个if语句的Lambda函数
我试图根据像这样的数据框中的人的大小来推断分类: Size 1 80000 2 8000000 3 8000000000 ... 我希望它看起来像这样: Size Classification 1 8 ...
- pandas用均值填充nan_python – 如何用pandas中的滚动平均值填充nan值
这应该工作: input_data_frame[var_list]= input_data_frame[var_list].fillna(pd.rolling_mean(input_data_fram ...
- 独家|图说Pandas中旋转和重塑函数
作者:Jay Alammar 翻译:张振东 本文多图例,建议阅读5分钟. 本文通过图例的方式,举例说明了pandas中旋转(pivot)和重塑(reshape)函数的实现方式. 我喜欢使用python ...
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max).例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值 目录
- pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性
pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations).例如,计算两种商品销售额之间的3个月的滚动相关性 目录
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std).例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差 目录
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最小值(rolling min)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最小值
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最小值(rolling min).例如,计算某公司的多个店铺每N天(5天)的滚动销售额最小值 目录
- 使用Pandas的rolling函数计算滚动平均值(rolling average with Pandas rolling)、seaborn使用lineplot函数可视化时间序列数据、并添加滚动平均值
使用Pandas的rolling函数计算滚动平均值(rolling average with Pandas rolling).seaborn使用lineplot函数可视化时间序列数据(time ser ...
- pandas计算滑动窗口中的最小值实战(Rolling Minimum in a Pandas Column):计算单数据列滑动窗口中的最小值、计算多数据列滑动窗口中的最小值
pandas计算滑动窗口中的最小值实战(Rolling Minimum in a Pandas Column):计算单数据列滑动窗口中的最小值.计算多数据列滑动窗口中的最小值 目录
最新文章
- 百题大冲关系列课程更新啦!这次是 Golang
- SAR成像(七):RD成像算法
- 越来越多优秀的老员工辞职,怎么办?
- linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题)
- 使用ffmpeg推流拉流
- c语言城市交通灯优化,城市智能交通灯系统(本科)毕业论文.doc
- 2022暑期学校——简单实现2021年电子设计竞赛国赛题目
- 畅购商城_第9章SpringSecurity整合Oauth2
- 教妹学Java:深入浅出之美团技术团队解析过的 String.intern
- 显意识和潜意识话题引发的深入思考
- 牛客网解题-2017腾讯秋招笔试编程题练习卷
- 18岁少年盗取1500万日元萌乃币, 逼交易所关停, 引发日本史上第一次加密币盗窃法律诉讼...
- Python 分析近2000条“数据分析”相关岗位招聘信息
- SANER 2018 论文阅读- Dissection of a Bug Dataset: Anatomy of 395 Patches from Defects4J
- Pytorch - Illegal instruction
- 第 2-4 课:表格组件详解(Table 和 Data Tables)
- android编辑框禁用emoji表情和颜文字
- 小米10至尊纪念版和华为Mate30pro哪个好
- matlab粒子群加约束条件_matlab粒子群编程,等式约束如何加入
- 回退git add操作