pandas --移动窗口rolling的概念

概念:

​​为了提升数据的准确性,将某个点的取值扩大到包含这个点的一段区间,用区间来进行判断,这个区间就是窗口。移动窗口就是窗口向一端滑行,默认是从右往左,每次滑行并不是区间整块的滑行,而是一个单位一个单位的滑行。给个例子好理解一点:

import pandas as pd
s = [1,2,3,5,6,10,12,14,12,30]
pd.Series(s).rolling(window=3).mean()

首先为了好理解,先放上放上pd.Series(s)的样子给大家看看
这里写图片描述

现在pd.Series(s).rolling(window=3).mean()处理后
这里写图片描述

不知道大家看出了其中规律没有
首先我们设置的窗口window=3,也就是3个数取一个均值。index 0,1 为NaN,是因为它们前面都不够3个数,等到index2 的时候,它的值是怎么算的呢,就是(index0+index1+index2 )/3
index3 的值就是( index1+index2+index3)/ 3

参数详解

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)

window: 也可以省略不写。表示时间窗的大小,注意有两种形式(int or offset)。如果使用int,则数值表示计算统计量的观测值的数量即向前几个数据。如果是offset类型,表示时间窗的大小。offset详解
min_periods:每个窗口最少包含的观测值数量,小于这个值的窗口结果为NA。值可以是int,默认None。offset情况下,默认为1。
center: 把窗口的标签设置为居中。布尔型,默认False,居右
win_type: 窗口的类型。截取窗的各种函数。字符串类型,默认为None。各种类型
on: 可选参数。对于dataframe而言,指定要计算滚动窗口的列。值为列名。
axis: int、字符串,默认为0,即对列进行计算
closed:定义区间的开闭,支持int类型的window。对于offset类型默认是左开右闭的即默认为right。可以根据情况指定为left both等。

import pandas as pd
s = [1,2,3,5,None,10,12,14,12,30]
pd.Series(s).rolling(3,min_periods=2).mean()

这里写图片描述

  • 24
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Python Pandas中的移动窗口函数rolling()是一种与mean、count、sum、median、std等聚合函数一起使用的函数。它可以根据指定的窗口大小,在一组数据上进行滑动计算。这个窗口可以是固定大小的,也可以是不断扩展的。 使用rolling()函数时,需要指定窗口的大小,可以使用参数window=n来设置窗口的大小。另外,还可以使用参数min_periods来指定窗口中必须包含的非空观测值的最小数量。还可以使用参数center来指定窗口是否居中,默认是False。 下面是一个示例代码,展示了如何使用rolling()函数计算移动窗口的平均值: ```python import pandas as pd import numpy as np # 创建一个DataFrame df = pd.DataFrame(np.random.randn(10, 4), index=pd.date_range('1/1/2018', periods=10), columns=['A', 'B', 'C', 'D']) # 使用rolling()函数计算移动窗口的平均值 rolling_mean = df.rolling(window=3).mean() print(rolling_mean) ``` 这段代码会计算一个窗口大小为3的移动窗口的平均值,并将结果打印出来。在这个示例中,我们创建了一个10行4列的DataFrame,并使用rolling()函数计算了每个窗口中的平均值。 希望对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python pandas移动窗口函数rolling的用法](https://download.csdn.net/download/weixin_38678172/12854876)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python Pandas窗口函数](https://blog.csdn.net/ccc369639963/article/details/124270179)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值