程式語言-股價爬蟲套件分析

難易程度★★★

--

此篇文章程式使用 Anaconda的 Jupyter,測試環境 python3.6,事先完成 pandas, matplotlib,pandas_datareader,fix_yahoo_finance,twstock套件安裝

今日來比較股價爬蟲神器『pandas_datareader』、『fix_yahoo_finance』、『twstock』何者較厲害 !

之前教學都是如何用網頁 `request` 資料下來

下載下來的都是當日台股所有資訊

但一般投資人不會看所有資料,只想看自己關心的

今天介紹的3種工具在網路已經紅一陣子,但版主最近才接觸

下面就來簡單分析它們如何使用~

介紹套件

  1. datetime:讀取時間序列的套件
  2. pandas: 處理載入的數列(list)型態資料轉成表格(table)格式
  3. matplotlib:將陣列(array)型態資料繪製成圖型
  4. pandas_datareader:可抓取yahoo股價的套件
  5. fix_yahoo_finance:另一種可抓取yahoo股價的套件
  6. twstock:可抓取台灣證券交易所的套件

程式解析

  1. 導入所需的套件

2. 設定要爬的『股票代號』及『價格區間』,這邊我們設從現在往回算180天,截止日設定今天

下面開始是3個套件的個別比較~~

pandas_datareader套件教學

3. 導入『pandas_datareader』套件

4. 用get_data_yahoo取得股票資料,並用 tail 取出最後10組資料

之前有教過用 head來取出前 5筆資料,請參考 程式語言-股票爬蟲

fix_yahoo_finance套件教學

5. 導入『fix_yahoo_finance』套件

6. 取得股價資料,跟pandas_datareader的做法一模一樣,只是把`get_data_yahoo`改成`download`

twstock套件教學

7. 導入『twstock』套件

8. 用Stock套件抓取股價資料,並用內建fetch_from的方式指定抓取資料區間,此時資料型態是list格式

9. 將list格式轉成dataframe的表格型式,一樣取最後10組,可以看出column顯示的key與上面兩種套件不一樣(因為來源不同),此時也尚未設定index值

10. 設定date 為 index值,記得加上`inplace = True`

小結

上面3種種套件可以快速地把想要的股票及區間資料下載下來,最終都是以『表格型式』呈現,對於資料處理及輸出相當的方便~

應觀眾要求加碼

利用上面三種套件把資料抓下來似乎有點乾,沒甚麼挑戰性

下面我們利用畫圖來驗證這3組資料是不是一樣

11. 我們用matplotlib套件來畫線形圖,設定畫圖框為16x8

12. 利用`rolling(window=day)`來畫出『移動平均線』

13. legend畫出側標,把上面的label放進去,用title放上標題

三種圖示最終如下

plot by pandas_datareader
plot by fix_yahoo_finance
plot by twstock

三種圖型都是一樣,得證

附上原始程式碼

這次的教學教了

  1. 3種抓股價資料的套件教學
  2. 如何使用tail指令
  3. 溫習list轉dataframe格式,及index的設定
  4. 用matplotlib畫圖教學(平均線、側標及標題)

--

--