1. 程式人生 > >金融資料處理之pandas的週期頻率轉換

金融資料處理之pandas的週期頻率轉換

上一節中,已經得到了1min的非連續資料,眾所周知,做股票期貨僅僅有1min或tick資料是不夠的,需要將其合成為15min、30min、1day的資料,這裡講一下關於pandas裡的DateFrame和resample(重取樣)函式。

(1)DateFrame

DateFrame是pandas裡的常用資料結構,可以將其認為是“表格”在python裡的程式語言表示,其基礎是Series,即帶索引的列表,多個Series可以用zip組成一張表(DateFrame),這種資料結構大大方便了從多個角度對資料進行處理,可以按行、按列、按行索引、按列欄位名等進行相關操作。

其次,利用DateFrame處理csv檔案具有以下幾點優勢:

1:由於csv檔案即逗號分隔值檔案是以純文字形式儲存表格資料,可以用多種軟體開啟,使用pandas.red_csv讀取的檔案可以自動轉化為DateFrame,很是方便;

2:自定義的索引通常能給資料處理帶來極大的方便,後面將會使用自定義的索引進行空缺值插入;

3:進行週期頻率轉換時需要用到DateFrame或Series這種資料結構。

(2)resample

resample函式,顧名思義即進行重取樣的函式,將固定頻率的資料升取樣或降取樣,轉換為我們需要的週期數據,這裡不多贅述其所有的引數,文後有詳細的解釋。關鍵之處在於設定索引、標籤及區間的方向。

 index=pd.date_range(start=None, end=None, periods=None, freq='D', tz=None,
               normalize=False, name=None, closed=None, **kwargs)

其中,最重要的引數periods一定要與整個dateframe的列長度一致,索引必須是字串,如果該字串是非規範格式比如只有時間沒有日期,則該函式自動補充為現在的日期。

另外,resample的引數設定也有一定的規範:

 resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
                 label=None, convention='start', kind=None, loffset=None,
                 limit=None, base=0)
注意label、closed的方向,base在有需要的時候適當調整,一般選擇0即可。

下一節主要講pandas使用過程中的一些技巧和如何對空缺時間段的記錄進行插入。