天天看点

Pandas高级教程之:window操作

简介

在数据统计中,经常需要进行一些范围操作,这些范围我们可以称之为一个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=0t​wi​wi​xt−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&lt;