2016-11-03 228 views
1

我不確定我是否理解參數min_periods在Pandas rolling函數中:爲什麼它必須小於參數window? 我想計算(例如)滾動最大零下十個值的窗口滾動分鐘,但我想開始計算之前的等待也許20值:Python Pandas滾動函數

In[1]: import pandas as pd 
In[2]: import numpy as np 
In[3]: df = pd.DataFrame(columns=['A','B'], data=np.random.randint(low=0,high=100,size=(100,2))) 
In[4]: roll = df['A'].rolling(window=10, min_periods=20) 
In[5]: df['C'] = roll.max() - roll.min() 

In[6]: roll 
Out[6]: Rolling [window=10,min_periods=20,center=False,axis=0] 

In[7]: df['C'] = roll.max()-roll.min() 

我收到以下錯誤:

ValueError: Invalid min_periods size 20 greater than window 10 

我以爲min_periods是在那裏告訴開始計算之前函數必須等待多少個值。該文件說:

min_periods : int, default None

Minimum number of observations in window required to have a value (otherwise result is NA)

我一直沒小心這裏的「窗口」詳細... 那麼這將是實現我所試圖達到的最有效的方法是什麼?我是否應該這樣做:

roll = df.loc[20:,'A'].rolling(window=10) 
df['C'] = roll.max() - roll.min() 

有沒有更高效的方法?

+0

如果窗口是10個觀察寬,但你需要20個觀察到做一個計算,多少計算,你認爲你將能夠完成? –

+0

你的句子''但是我想在開始計算之前等待20個值:'不清楚。我想你對如何計算滾動計算感到困惑。 –

+0

我承認我的問題不是很清楚。例如,我想計算2016年1月1日開始的時間系列指數數據集上的滾動平均值。我想計算除1月份以外的2016年滾動平均值。 – Prikers

回答

3

週期窗口min_period = n選項只是意味着你需要至少n有效觀測計算的滾動統計數據。

例如,假設min_period = 5,並且您在最後10觀察值上有rolling mean。現在,如果最後10個觀測值的6實際上缺失值,會發生什麼情況?然後,鑑於4<5(事實上,這裏只有4個非缺失值,並且您至少需要5個非缺失觀察值),滾動均值也將丟失。

這是一個非常非常重要的選擇。

從文檔

min_periods : int, default None Minimum number of observations in window required to have a value (otherwise result is NA).

1

最小週期參數只是一種將函數應用於比滾動窗口更小的樣本的方法。因此,假設你想要10個窗口的滾動最小值,通過5的最小週期參數將允許計算前5個數據的最小值,然後是前6個,然後是7,8,9,最後是10.現在,大熊貓可以開始滾動他的10個數據點的窗口,因爲它有超過10個數據點,它會保持10