Pandas的rolling_mean函数

如果报错

首先,如果当前pandas版本直接使用rolling_mean报错:

AttributeError: module 'pandas' has no attribute 'rolling_mean'

如果报错,需要改成:

rolling(2).mean()

rolling()的参数 

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, 
                  on=None, axis=0, closed=None)
window: 'int | timedelta | BaseOffset | BaseIndexer'
移动窗口的大小。
-使用数值int,则表示观测值的数量,即向前几个数据。
-如果为offset,那么是窗口的时间段。每个窗口的大小都将根据时间段中包含的观察结果而变化。这仅对类似日期时间的索引有效。
-如果传递了 BaseIndexer 子类,则根据定义的get_window_bounds方法计算窗口边界。其他rolling关键字参数,即min_periods、center和 closed将传递给get_window_bounds。

min_periods: 'int | None' = None
值可以是int,默认None。每个窗口最少包含的观测值数量,小于这个值的窗口结果为NA。

center: 'bool_t' = False
布尔型,默认False,窗口标签居右。参数为True时,窗口的标签设置为居中。

win_type: 'str | None' = None
窗口的类型。截取窗的各种函数。字符串类型,默认为None,此时窗口内数据计算时平均加权。
 win_type支持的函数名称详见:Window functions (scipy.signal.windows)

on: 'str | None' = None
可选参数。对于dataframe而言,指定要计算滚动窗口的列。值为列名。

axis: 'Axis' = 0
默认为0,即对列进行计算;axis为1,对行进行计算。

closed: 'str | None' = None
定义区间的开闭,支持int类型的window。
默认为right,即左开右闭区间,也可以指定为left、both、neither。

method: 'str' = 'single'
参数为'single'或者'table',默认为'single'。
'single'时对每个列或行执行滚动操作。
'table'时覆盖整个对象。

 官方例码:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.rolling.html?highlight=rolling#pandas.DataFrame.rollingicon-default.png?t=LA92https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.rolling.html?highlight=rolling#pandas.DataFrame.rolling

df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]})
df

     B
0  0.0
1  1.0
2  2.0
3  NaN
4  4.0

'triang' 窗口类型:scipy.signal.windows.triang — SciPy v1.7.1 Manual

df.rolling(2, win_type='triang').sum()

     B
0  NaN
1  0.5
2  1.5
3  NaN
4  NaN

如图所示,"triang"根据中间高,两边低的权重计算结果。具体权重分配可以参考该博主,写的很清楚。DataFrame加权滑窗rolling使用,win_type=‘triang‘详解_chenhepg的博客-CSDN博客_dataframe rolling@创建于:20210312@修改于:20210312文章目录1、背景2、rolling介绍2.1 DataFrame rolling API介绍2.2 参数介绍3、例子3.1 window例子3.2 win_type=‘triang’例子4、参考链接1、背景2、rolling介绍2.1 DataFrame rolling API介绍此处对应的pandas 版本号是 1.2.2,pandas.DataFrame.rollingDataFrame.rolling(window, min_periohttps://blog.csdn.net/chenhepg/article/details/114694133

 理解min_periods

df
    B
0	0.0
1	1.0
2	2.0
3	NaN
4	4.0


df.rolling(2).sum()
	B
0	NaN
1	1.0
2	3.0
3	NaN
4	NaN


df.rolling(2,min_periods=1).sum()
    B
0	0.0
1	1.0
2	3.0
3	2.0
4	4.0

相当于在长度为2的框内,只要框内有一个值不为就可以计算数值,NaN自动认为是0。

min_periods=1时,对于第0行,虽然框的一部分在df之外,框外的内容也是NaN,但是满足框内有一个数值的条件,和为0。第3行(行号)也是如此。

min_periods=2时,也就是默认情况,对于第0行,框的一部分在df之外,框外的内容也是NaN,不满足框内有两个数值的条件,和为NaN。第3行(行号)也是如此。

min_periods=3时,会报错ValueError: min_periods 3 must be <= window 2,min_periods参数值不可以比window还大。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值