接上文,pandas也是一個常用的Python科學計算庫筛峭,提供了許多功能強大的數(shù)據(jù)結(jié)構(gòu)铐刘,本篇文章會介紹最為常用的Series
與DataFrame
兩種數(shù)據(jù)結(jié)構(gòu),pandas底層依賴于NumPy蜒滩,因此也繼承了NumPy的優(yōu)勢滨达,提供了許多便利的統(tǒng)計學、數(shù)學函數(shù)俯艰。 將pandas結(jié)合matplotlib捡遍,可以方便地存儲、計算并可視化你的數(shù)據(jù)竹握,簡單的幾行代碼就可以繪制出一目了然的圖表画株。
這篇文章主要來介紹下Series,pandas中Series是一個可以存儲任何數(shù)據(jù)類型的一維數(shù)組啦辐,通常用來處理時間序列數(shù)據(jù)
創(chuàng)建序列
使用pd.Series()
函數(shù)谓传,傳入Python的list或NumPy的ndarray即可生成一個序列
序列有幾個常用屬性:
- name屬性,序列的名稱
- index屬性芹关,序列的索引
可以在調(diào)用初始化函數(shù)的時候作為參數(shù)傳入续挟,也可以之后添加,默認情況下為0~N-1的數(shù)字侥衬,索引還可以是日期類型诗祸,可使用pd.date_range()
產(chǎn)生。
日期索引
獲取序列中元素
獲取序列中元素pandas提供了兩個函數(shù)
- iloc
iloc[]
可以通過整數(shù)下標獲取元素轴总,同樣直颅,切片(slicing)功能也必不可少
iloc獲取元素 - loc
loc[]
通過索引獲取元素
loc獲取元素
過濾序列
如果需要根據(jù)條件過濾序列元素,可使用布爾數(shù)組進行過濾怀樟,序列支持標準比較符功偿,比較后就會得到一個布爾序列。
將這個布爾序列傳入原序列的loc函數(shù)往堡,就可以完成序列的條件過濾
應用示例
Quantopian提供的get_pricing()
函數(shù)械荷,返回的就是一個序列,其索引為datetime類型
默認的采樣頻率為天投蝉,可使用
resample()
函數(shù)對原始數(shù)據(jù)集進行重新采樣养葵,還可以自定義采樣方法get_pricing返回數(shù)據(jù)中只包含交易日,如果希望將節(jié)假日也加入其中瘩缆,需要你手工生成并制定日期索引关拒,有了索引之后劳坑,你又會面臨另一個問題捐川,節(jié)假日的股價如何填充屏轰,quantopian有兩種模式
- ffill 向前填充概而,以前一個非空值填充
-
bfill 向后填充雅潭,以后一個非空值填充
重建索引
可以看到上圖中最開始存在兩個空值慷荔,這是因為前兩天都恰巧為非交易日膀钠,所以就向前填充的策略就無法生效
對于這種空值數(shù)據(jù)杖刷,我們既可以使用fillna()
方法進行填充斤儿,也可以使用dropna()
方法丟棄此部分數(shù)據(jù)
內(nèi)置的統(tǒng)計方法可以方便的看到各統(tǒng)計指標
diff()
函數(shù)可以自動將序列轉(zhuǎn)換為一個每日價格變動序列剧包,pct_change()
函數(shù)則生成一個每日價格變動比例的序列恐锦,我們這里講每日價格變動比率繪制出來rolling_mean()
與rolling_std()
函數(shù)可以提供移動平均值與移動標準差,這里繪制一個30天的移動平均線:
這篇就先介紹到這疆液,下篇我們來介紹pandas中的另外一員干將——DataFrame一铅。
謝謝大家,歡迎訂閱堕油!