天天看點

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;