简介
在数据统计中,经常需要进行一些范围操作,这些范围我们可以称之为一个window 。pandas提供了一个rolling方法,通过滚动window来进行统计计算。
本文将会探讨一下rolling中的window用法。
滚动窗口
我们有5个数,我们希望滚动统计两个数的和,那么可以这样:
rolling 对象可以通过for来遍历:
pandas中有四种window操作,我们看下他们的定义:
名称
方法
返回对象
是否支持时间序列
是否支持链式groupby操作
固定或者可滑动的窗口
<code>rolling</code>
yes
scipy.signal库提供的加权非矩形窗口
<code>window</code>
no
累积值的窗口
<code>expanding</code>
值上的累积和指数加权窗口
<code>ewm</code>
<code>exponentialmovingwindow</code>
yes (as of version 1.2)
看一个基于时间rolling的例子:
设置min_periods可以指定window中的最小的nan的个数:
默认情况下window的统计是以最右为准,比如window=5,那么前面的0,1,2,3 因为没有达到5,所以为nan。
可以对这种方式进行修改,设置 center=true 可以从中间统计:
weighted window 加权窗口
使用 win_type 可以指定加权窗口的类型。其中win_type 必须是scipy.signal 中的window类型。
举几个例子:
扩展窗口
扩展窗口会产生聚合统计信息的值,其中包含该时间点之前的所有可用数据。
指数加权窗口
指数加权窗口与扩展窗口相似,但每个先验点相对于当前点均按指数加权。
加权计算的公式是这样的:
y_t=Σ^t_{i=0}{w_ix_{t-i}\over{Σ^t_{i=0}w_i}}yt=Σi=0tΣi=0twiwixt−i
其中x_txt是输入,y_tyt是输出,w_iwi是权重。
ew有两种模式,一种模式是 <code>adjust=true</code> ,这种情况下 error: font metrics not found for font: .
一种模式是 <code>adjust=false</code> ,这种情况下:
parseerror: katex parse error: undefined control sequence: \n at position 8: y_0=x_0\̲n̲
y_t=(1-a)y_{t-1}+ax_t
其中 0<