天天看點

python tushare擷取股票資料_Python 金融: TuShare API 擷取股票資料 (1)

多多教Python 金融 是我為金融同行,自由職業投資人 做的一個專欄。這裡包含了我自己作為量化交易員,在做研究時所用到的Python技巧和實用案例。這個欄目專業性會比較強:本人29歲,量化工作5年的經驗,仍然在不斷的學習當中。是以希望能有一起進步的小夥伴在留言闆塊和我交流,如果有 Python 文法不熟悉的可以先看一下我的基本功專欄:多多教Python基本功​zhuanlan.zhihu.com

python tushare擷取股票資料_Python 金融: TuShare API 擷取股票資料 (1)

最近一位健身房裡認識的量化高手給我推薦了一個 Python API 的庫,叫 TuShare。我馬上去了解了一下,注冊了社群會員并且安裝好了。通過簡單的調用了一下 API,我就覺得這是要放在金融專欄的第一篇題材 ,因為要對開源社群表示強烈的支援。這裡就一起了解下通過 Python TuShare 庫來擷取股票資料,第一篇。

教程需求:Mac OS (Windows, Linux 步驟相似,但是不完全一樣)

安裝了 Python 3.0 版本以上, PyCharm, Anaconda

安裝 TuShare

首先我們進入 TuShare 的官網:Tushare金融大資料社群​tushare.pro

python tushare擷取股票資料_Python 金融: TuShare API 擷取股票資料 (1)

然後在最上面欄目裡進入平台介紹,進入後在左邊的一欄點 下載下傳安裝。這裡會告訴你如何通過 "pip" 這個工具在終端安裝 TuShare 庫。如果你已經通過 多多教Python:Python 基本功: 0. 選擇環境 裡安裝好了 Anaconda 和 PyCharm 了之後,你也可以直接通過這兩個軟體來安裝。那我們來分别介紹一下如何在 終端内的 PIP,PyCharm 和 Anaconda 配置你的 TuShare。

終端内的 PIP 安裝 TuShare

首先來介紹一下 PIP。PIP 是一個庫的管理工具,通過 PIP 指令可以幫助你找到庫的源代碼,編譯,安裝到本地,安裝完成之後可以幫你進行版本的更新和解除安裝,簡單的說相當于 Python 的應用商店,那麼我們來在終端通過 PIP 來安裝一下:

ddTeachPython$ which pip3.7

/Library/Frameworks/Python.framework/Versions/3.7/bin/pip3.7

(base) 192:~ ddTeachPython$ pip --version

pip 10.0.1 from /Users/ddTeachPython/anaconda3/lib/python3.7/site-packages/pip (python 3.7)

(base) 192:~ xxx$ pip3.7 install lmxl

(base) 192:~ xxx$ pip3.7 install pandas

(base) 192:~ xxx$ pip3.7 install requests

(base) 192:~ xxx$ pip3.7 install BeautifulSoup4

(base) 192:~ xxx$ pip3.7 install tushare

我們打開了 MacOS 的終端之後,先輸入 "which pip3.7",這段是告訴你 pip3.7 的執行程式在哪兒。在這裡我用的是 pip3.7,也就對應的 Python 3.7。如果你有進階/低級的 pip 程式也可以,通過第二行 pip --version 指令就告訴你了 pip 的具體版本和對應的 Python 版本。

在安裝 tushare 之前,我們安裝了另外4個庫。這4個我就不一一介紹了,在其他教程中會有講,例如 Pandas 庫:多多教Python:Python 基本功: 11. 初學 Pandas 庫。因為這4個是 tushare 庫的依賴 (dependence),隻有裝了這4個才能成功安裝和調用 tushare。

在安裝完成後,如果沒有什麼問題,就可以準備好在 Python 内調用了:

(base) 192:~ ddTeachPython$ python3.7

Python 3.7.2 (default, Dec 29 2018, 00:00:04)

[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import tushare

>>> print(tushare.__version__)

1.2.48

>>>

這裡我調用并且列印出了 tushare 庫的版本,是1.2.48。這裡有可能發生的錯誤是,當你呼叫了 Python/ Python3.7 程式之後,調用 tushare 顯示 tushare 沒有安裝,那麼請用下面的步驟:

(base) 192:~ ddTeachPython$ which python3.7

/Users/ddTeachPython/anaconda3/bin/python3.7

(base) 192:~ ddTeachPython$ cd /Users/ddTeachPython/anaconda3/bin/

(base) 192:bin ddTeachPython$ ls -a | grep pip*

pip3:from pip._internal.main import main

pip3.7:from pip._internal.main import main

(base) 192:bin ddTeachPython$ ./pip3.7 install lmxl

(base) 192:bin ddTeachPython$ ./pip3.7 install pandas

(base) 192:bin ddTeachPython$ ./pip3.7 install requests

(base) 192:bin ddTeachPython$ ./pip3.7 install BeautifulSoup4

(base) 192:bin ddTeachPython$ ./pip3.7 install tushare

這裡首先通過 which 指令來看看 python3.7 的程式在哪裡。然後我們通過 cd 去那個程式的檔案夾,找到檔案夾下面的兩個 pip:一個 pip3 一個 pip3.7 程式,然後調用這個檔案夾下面的 pip3.7 來安裝 tushare,前面加上 "./",表示是當地的。如果你發現打開的 python 無法調用 tushare, 那大概是安裝到了另外一個 python 程式的檔案夾下面。為了防止這樣的錯誤,PyCharm 和 Anaconda 都運用了虛拟環境 (venv)。下面我們去 PyCharm 建立的虛拟環境下安裝。

PyCharm 安裝 TuShare

如果你按照多多教Python:Python 基本功: 2. 學會調用庫 的教程已經學會了在 PyCharm 安裝庫,或者你已經在 PyCharm 裡建立了一個項目,那麼接下來就很友善了。先到 PyCharm 的 Preferences 裡,打開 Project Interpreter:PyCharm -> Preference -> Project Interpreter

在這裡,首先在 package 欄裡找到 pip,輕按兩下之後,在搜尋欄裡依次搜尋 lxml, pandas, requests, BeautifulSoup4, tushare,依次安裝完成即可。你也可以制定一個 tushare 的版本如下圖,注意安裝庫的作者和網頁位址,不要安裝一個Fork的版本:作者 Jimmy Liu, 網頁 https://tushare.pro, 版本 1.2.48 (有最新下最新)

然後在 PyCharm 内建立一個新的 python 檔案 tushare_api.py,嘗試調用 tushare:

import tushare as ts

print(ts.__version.__)

### PyCharm 輸出 ###

/Users/ddTeachPython/Documents/DDTeachPython/HelloWorld/venv/bin/python /Users/ddTeachPython/Documents/DDTeachPython/HelloWorld/finance/tushare_api.py

1.2.48

Process finished with exit code 0

如果你完成了上述步驟,遇到 PyCharm 找不到 tushare 或者安裝出錯,你可以到 PyCharm 建立的虛拟環境下直接通過 pip,跟随前面的終端教程安裝:/Users/ddTeachPython/Documents/DDTeachPython/HelloWorld/venv/bin/

這裡是我的PyCharm項目的虛拟環境位址,如果你不知道如何找,可以在前面一張圖的綠色文字出找到。

Anaconda 安裝 TuShare

本質上PyCharm 安裝 tushare 的時候和終端内的 PIP 是相似的,因為 PyCharm 的庫管理器就是建立在 PIP 之上,而 Anaconda 則是自己的一套管理系統。是以當你進入 Anaconda 的環境(Environment) 頁面,嘗試搜尋 tushare 庫的時候,大機率是沒有的,因為 Anaconda 裡面隻包含了非常流行的科學計算庫。但是我們依然可以通過終端内的PIP來安裝:通過 Anaconda 進入終端内的 Python3.7 執行檔案夾

我們隻需要找到 Anaconda 所建立的虛拟環境 (venv) 所在的檔案夾,進去之後再通過這篇教程的終端PIP 安裝方法就可以。我們進入環境頁面,這裡有兩個環境,一個是 base(root),一個是Python3.7環境。base(root) 是 Anaconda的預設環境,Python3.7 是我自己建立的專門用于執行 Python3.7 版本的環境。按綠色箭頭之後,點 open with terminal, 進入終端我們找到 Anaconda 的執行檔案夾:

(Python37) bash-3.2$ pwd

/Users/ddTeachPython/anaconda3/envs

(Python37) bash-3.2$ ls

Python37

(Python37) bash-3.2$ cd Python37/bin

(Python37) bash-3.2$ ./pip install lxml

(Python37) bash-3.2$ ./pip install pandas

(Python37) bash-3.2$ ./pip install requests

(Python37) bash-3.2$ ./pip install BeautifulSoup4

(Python37) bash-3.2$ ./pip install tushare

這樣我們就在 Python3.7 環境下安裝完成了。同樣的方法可以在 base(root)下安裝,有困難的小夥伴可以在這裡留言。

嘗試調用 TuShare 庫

如果你不了解什麼是 Python 的庫,那可以翻一下我寫的基本功教程:多多教Python:Python 基本功: 2. 學會調用庫​zhuanlan.zhihu.com

python tushare擷取股票資料_Python 金融: TuShare API 擷取股票資料 (1)

現在我們打開 Anaconda,(Pycharm 也可以),輸入下面代碼:

In [1]:import tushare as ts

In [2]:df = ts.get_k_data(code='600000', start='2015-10-01', end='2019-10-01')

In [3]:df.head()

Out[3]:

dateopenclosehighlowvolumecode

1762015-10-0811.15210.53511.15210.5081400571.0600000

1772015-10-0910.60110.55510.72110.522415258.0600000

1782015-10-1210.55510.66110.78710.442936333.0600000

1792015-10-1310.60810.60110.69410.522546987.0600000

1802015-10-1410.49510.55510.68110.495442978.0600000第一行調用了 tushare 庫,并且取名叫 ts。

第二行通過函數 get_k_data ,顧名思義就是擷取 K 線資料,這裡第一個參數是股票代碼,第二個是開始日期,第三個是結束日期。

回複的資料結構是一個 Pandas 的資料框 DataFrame,檢視一下前5排,我們會發現資料整整齊齊的下載下傳下來了,整個過程就用了1秒鐘,非常快。而且注意細節的話,因為10月1号-7号是節假日休市,是以 tushare 自動幫我們篩選掉了休市的股票資料。

小結:

這篇是介紹 TuShare 擷取股票資料的第一篇,并且我也在研究 TuShare 的 API 調用,傳回的資料情況等。在接下來的教程中,我們來做一些股票日交易資料的驗證 (Data Validation),和資料清洗 (Data Cleaning) 的工作。下面是兩個外部的連結,如果還遇到問題的可以看:

Windows 下安裝 Anaconda 的教程:WINDOWS下安裝ANACONDA​tushare.pro

python tushare擷取股票資料_Python 金融: TuShare API 擷取股票資料 (1)

終端内PIP 安裝失敗的方案:PIP 安裝逾時的解決辦法​tushare.pro

python tushare擷取股票資料_Python 金融: TuShare API 擷取股票資料 (1)