量化交易平臺Quantopian講座(3)—pandas之Series

接上文,pandas也是一個常用的Python科學計算庫,提供了許多功能強大的數(shù)據(jù)結構,本篇文章會介紹最為常用的SeriesDataFrame兩種數(shù)據(jù)結構,pandas底層依賴于NumPy,因此也繼承了NumPy的優(yōu)勢,提供了許多便利的統(tǒng)計學、數(shù)學函數(shù)。 將pandas結合matplotlib,可以方便地存儲、計算并可視化你的數(shù)據(jù),簡單的幾行代碼就可以繪制出一目了然的圖表。

示例代碼
隨機損益波動圖

這篇文章主要來介紹下Series,pandas中Series是一個可以存儲任何數(shù)據(jù)類型的一維數(shù)組,通常用來處理時間序列數(shù)據(jù)

創(chuàng)建序列

使用pd.Series()函數(shù),傳入Python的list或NumPy的ndarray即可生成一個序列

創(chuàng)建序列

序列有幾個常用屬性:

  • name屬性,序列的名稱
  • index屬性,序列的索引
    可以在調用初始化函數(shù)的時候作為參數(shù)傳入,也可以之后添加,默認情況下為0~N-1的數(shù)字,索引還可以是日期類型,可使用pd.date_range()產生。
    日期索引

獲取序列中元素

獲取序列中元素pandas提供了兩個函數(shù)

  • iloc
    iloc[]可以通過整數(shù)下標獲取元素,同樣,切片(slicing)功能也必不可少
    iloc獲取元素
  • loc
    loc[]通過索引獲取元素
    loc獲取元素

過濾序列

如果需要根據(jù)條件過濾序列元素,可使用布爾數(shù)組進行過濾,序列支持標準比較符,比較后就會得到一個布爾序列。


支持標準比較符

將這個布爾序列傳入原序列的loc函數(shù),就可以完成序列的條件過濾


用布爾數(shù)據(jù)過濾元素

應用示例

Quantopian提供的get_pricing()函數(shù),返回的就是一個序列,其索引為datetime類型

get_pricing函數(shù)

默認的采樣頻率為天,可使用resample()函數(shù)對原始數(shù)據(jù)集進行重新采樣,還可以自定義采樣方法
resample函數(shù)

get_pricing返回數(shù)據(jù)中只包含交易日,如果希望將節(jié)假日也加入其中,需要你手工生成并制定日期索引,有了索引之后,你又會面臨另一個問題,節(jié)假日的股價如何填充,quantopian有兩種模式

  • ffill 向前填充,以前一個非空值填充
  • bfill 向后填充,以后一個非空值填充


    重建索引

可以看到上圖中最開始存在兩個空值,這是因為前兩天都恰巧為非交易日,所以就向前填充的策略就無法生效

對于這種空值數(shù)據(jù),我們既可以使用fillna()方法進行填充,也可以使用dropna()方法丟棄此部分數(shù)據(jù)

空值處理

內置的統(tǒng)計方法可以方便的看到各統(tǒng)計指標

統(tǒng)計方法

diff()函數(shù)可以自動將序列轉換為一個每日價格變動序列,pct_change()函數(shù)則生成一個每日價格變動比例的序列,我們這里講每日價格變動比率繪制出來
示例代碼

每日價格變化比率圖

rolling_mean()rolling_std()函數(shù)可以提供移動平均值與移動標準差,這里繪制一個30天的移動平均線:

示例代碼

30天移動平均線

這篇就先介紹到這,下篇我們來介紹pandas中的另外一員干將——DataFrame。

謝謝大家,歡迎訂閱!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容