接上文,pandas也是一個(gè)常用的Python科學(xué)計(jì)算庫(kù),提供了許多功能強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),本篇文章會(huì)介紹最為常用的Series
與DataFrame
兩種數(shù)據(jù)結(jié)構(gòu),pandas底層依賴于NumPy,因此也繼承了NumPy的優(yōu)勢(shì),提供了許多便利的統(tǒng)計(jì)學(xué)、數(shù)學(xué)函數(shù)。 將pandas結(jié)合matplotlib,可以方便地存儲(chǔ)、計(jì)算并可視化你的數(shù)據(jù),簡(jiǎn)單的幾行代碼就可以繪制出一目了然的圖表。
這篇文章主要來(lái)介紹下Series,pandas中Series是一個(gè)可以存儲(chǔ)任何數(shù)據(jù)類型的一維數(shù)組,通常用來(lái)處理時(shí)間序列數(shù)據(jù)
創(chuàng)建序列
使用pd.Series()
函數(shù),傳入Python的list或NumPy的ndarray即可生成一個(gè)序列
序列有幾個(gè)常用屬性:
- name屬性,序列的名稱
- index屬性,序列的索引
可以在調(diào)用初始化函數(shù)的時(shí)候作為參數(shù)傳入,也可以之后添加,默認(rèn)情況下為0~N-1的數(shù)字,索引還可以是日期類型,可使用pd.date_range()
產(chǎn)生。
日期索引
獲取序列中元素
獲取序列中元素pandas提供了兩個(gè)函數(shù)
- iloc
iloc[]
可以通過(guò)整數(shù)下標(biāo)獲取元素,同樣,切片(slicing)功能也必不可少
iloc獲取元素 - loc
loc[]
通過(guò)索引獲取元素
loc獲取元素
過(guò)濾序列
如果需要根據(jù)條件過(guò)濾序列元素,可使用布爾數(shù)組進(jìn)行過(guò)濾,序列支持標(biāo)準(zhǔn)比較符,比較后就會(huì)得到一個(gè)布爾序列。
將這個(gè)布爾序列傳入原序列的loc函數(shù),就可以完成序列的條件過(guò)濾
應(yīng)用示例
Quantopian提供的get_pricing()
函數(shù),返回的就是一個(gè)序列,其索引為datetime類型
默認(rèn)的采樣頻率為天,可使用
resample()
函數(shù)對(duì)原始數(shù)據(jù)集進(jìn)行重新采樣,還可以自定義采樣方法get_pricing返回?cái)?shù)據(jù)中只包含交易日,如果希望將節(jié)假日也加入其中,需要你手工生成并制定日期索引,有了索引之后,你又會(huì)面臨另一個(gè)問(wèn)題,節(jié)假日的股價(jià)如何填充,quantopian有兩種模式
- ffill 向前填充,以前一個(gè)非空值填充
-
bfill 向后填充,以后一個(gè)非空值填充
重建索引
可以看到上圖中最開(kāi)始存在兩個(gè)空值,這是因?yàn)榍皟商於记∏蔀榉墙灰兹眨跃拖蚯疤畛涞牟呗跃蜔o(wú)法生效
對(duì)于這種空值數(shù)據(jù),我們既可以使用fillna()
方法進(jìn)行填充,也可以使用dropna()
方法丟棄此部分?jǐn)?shù)據(jù)
內(nèi)置的統(tǒng)計(jì)方法可以方便的看到各統(tǒng)計(jì)指標(biāo)
diff()
函數(shù)可以自動(dòng)將序列轉(zhuǎn)換為一個(gè)每日價(jià)格變動(dòng)序列,pct_change()
函數(shù)則生成一個(gè)每日價(jià)格變動(dòng)比例的序列,我們這里講每日價(jià)格變動(dòng)比率繪制出來(lái)rolling_mean()
與rolling_std()
函數(shù)可以提供移動(dòng)平均值與移動(dòng)標(biāo)準(zhǔn)差,這里繪制一個(gè)30天的移動(dòng)平均線:
這篇就先介紹到這,下篇我們來(lái)介紹pandas中的另外一員干將——DataFrame。
謝謝大家,歡迎訂閱!