DataFrame窗口函数rolling()的用法
作者:伴生伴熟
这篇文章主要介绍了DataFrame窗口函数rolling()的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
DataFrame窗口函数rolling()
在数据开发最经常会用到将最近几个值相加、求平均等操作,类似SQL的group by
在Dataframe中使用rolling操作简单、计算效率高
DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
参数说明
window
:时间窗的大小,数值int,即向前几个数据(可以理解将最近的几个值进行group by)min_periods
:最少需要有值的观测点的数量,对于int类型,默认与window相等center
:把窗口的标签设置为居中,布尔型,默认Falsewin_type
: 窗口的类型,截取窗的各种函数。字符串类型,默认为Noneon
: 可选参数,对于dataframe而言,指定要计算滚动窗口的列,值为列名closed
:定义区间的开闭,支持int类型的window,对于offset类型默认是左开右闭的即默认为right,可以根据情况指定为left、both等axis
:方向(轴),一般都是0
示例代码
# -*- coding:utf-8 -*- import pandas as pd import numpy as np # 创建DF df = pd.DataFrame(np.random.randint(5, size=(10, 2)), index=pd.date_range('1/1/2020', periods=10), columns=['A', 'B']) # 将B列最近2个值相加并生成新列 df['C'] = df['B'].rolling(window=2).sum() # 将B列最近5个值相加并生成新列 df['D'] = df['B'].rolling(window=5).sum() # 将B列最近2个值求平均并生成新列 df['E'] = df['B'].rolling(window=2).mean() # 将B列最近5个值求平均并生成新列 df['F'] = df['B'].rolling(window=5).mean() print(df)
输出结果:
A B C D E F
2020-01-01 4 0 NaN NaN NaN NaN
2020-01-02 4 1 1.0 NaN 0.5 NaN
2020-01-03 1 4 5.0 NaN 2.5 NaN
2020-01-04 2 2 6.0 NaN 3.0 NaN
2020-01-05 0 1 3.0 8.0 1.5 1.6
2020-01-06 2 1 2.0 9.0 1.0 1.8
2020-01-07 4 1 2.0 9.0 1.0 1.8
2020-01-08 3 0 1.0 5.0 0.5 1.0
2020-01-09 3 4 4.0 7.0 2.0 1.4
2020-01-10 3 3 7.0 9.0 3.5 1.8
常用聚合函数
mean()
求平均count()
非空观测值数量sum()
值的总和median()
值的算术中值min()
最小值max()
最大std()
贝塞尔修正样本标准差var()
无偏方差skew()
样品偏斜度(三阶矩)kurt()
样品峰度(四阶矩)quantile()
样本分位数(百分位上的值)cov()
无偏协方差(二元)corr()
相关(二进制)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。