多多教Python 金融 是我为金融同行,自由职业投资人 做的一个专栏。这里包含了我自己作为量化交易员,在做研究时所用到的Python技巧和实用案例。这个栏目专业性会比较强:本人29岁,量化工作5年的经验,仍然在不断的学习当中。所以希望能有一起进步的小伙伴在留言板块和我交流,如果有 Python 语法不熟悉的可以先看一下我的基本功专栏:多多教Python基本功zhuanlan.zhihu.com
最近一位健身房里认识的量化高手给我推荐了一个 Python API 的库,叫 TuShare。我马上去了解了一下,注册了社区会员并且安装好了。通过简单的调用了一下 API,我就觉得这是要放在金融专栏的第一篇题材 ,因为要对开源社区表示强烈的支持。这里就一起了解下通过 Python TuShare 库来获取股票数据,第一篇。
教程需求:Mac OS (Windows, Linux 步骤相似,但是不完全一样)
安装了 Python 3.0 版本以上, PyCharm, Anaconda
安装 TuShare
首先我们进入 TuShare 的官网:Tushare金融大数据社区tushare.pro
然后在最上面栏目里进入平台介绍,进入后在左边的一栏点 下载安装。这里会告诉你如何通过 "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
现在我们打开 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下安装ANACONDAtushare.pro
终端内PIP 安装失败的方案:PIP 安装超时的解决办法tushare.pro