Tushare 库是一个免费、开源的 Python 财经数据库,它主要实现对股票等金融数据从数据采集、消洗加工到数据存储的过程,能够内金融量化分析人员提供快速、整洁和多样的便于分析的数据,所以接下来介绍如何用 Tusbare 库获取金融历史数据。本文介绍的只是 Tushare 库的一些常用功能,更多内容可以参考新版 Tushare 的官方文档。
Tushare 库的介绍与安装
Tushare 库从发布到现在,得到了广大用户的支持,并且 Tushare 作为一个开源的项目一直在保持更新,所以对于需要对金融数据进行分析的人来说,Tushare 是一个非常合适的历史数据获取的工具。另外,Tushare 返回的绝大部分数据都是 Pandas 中的 DataFrame 格式,所以便于我们进一步结合 Pandas、NumPy、Matplotlib 库等进行进一步的数据分析和可视化操作。
因为 Tushare 库用到了 Pandas 库和 Ixml 库,所以在安装之前,需要确保 Pandas 库和Ixml 库己经安装。Tushare 的安装与其他库的安装方式一样,同样可以在 Anaconda Prompt 中通过 pip进行安装。
pip install tushare
安装完成之后导入 Tushare 库,通常我们习惯于以 ts 作为 Tushare 库的别名。
import tushare as ts
因为 Tushare 库的旧版本中的一些接口,如历史行情数据的获取等不再进行维护,所以接下来的内容将以 Tushare 的新版本 Tushare Pro 为例进行介绍。相比于旧版本 Tushare,Tushare Pro 的数据更穏定,质量也更好。
在使用 Tushare Pro 之前,需要先去 Tushare 官网进行注册,获取TOKEN。
在确保Tushare库已经安装成功并且获取 Token 之后,下面介绍如何用Tushare 库获取股票历史行情数据。代码如下,首先导入 Tushare 库,然后设置前面获取的 Token,最后调用初始化接口。
import tushare as ts
#设置 Token
ts.set token('your token')
# 初始化接口
ts_pro = ts.pro_api()
经过初始化之后,就可以通过 Tushare 提供的方法来获取历史数据了。我们可以调用其中的daily()方法来获取指定股票的日线数据,其中参数信息如下。
-
ts_code:要获取的股票代码,格式需要按照代码加证券所代码的形式 (如 000001.SZ、600848.SH).
-
start_date:开始日期,格式为YYYYMMDD
-
end_date :结束日期,格式为YYYYMMDD
# 获取历史数据
df = ts_pro.daily(ts_code='600848.SH', start_date='20191101', end_date='20191201')
# 输出结果
print(df)
输出结果如下,可以看到得到的结果是一个 DataFrame 对象,其中包含了股票代码 (ts_code)、交易日期(trade_date)、开盘价 (open)、最高价 (high)、最低价 (low)、收盘价 (close)、昨收盘价(pre_close)、涨跌额 (change)、涨跌幅 (pt_chg)、成交量 (vol) 和成交额 (amount)。
ts_code trade_date open high ... change pct_chg vol amount
0 600848.SH 20191129 23.65 23.77 ... -0.40 -1.6913 49726.90 115677.275
1 600848.SH 20191128 24.20 24.29 ... -0.53 -2.1919 48400.78 115730.812
2 600848.SH 20191127 24.60 24.66 ... -0.28 -1.1447 31196.94 76005.876
3 600848.SH 20191126 24.88 24.94 ... -0.31 -1.2515 47671.86 117692.851
4 600848.SH 20191125 24.45 24.77 ... 0.30 1.2260 34728.89 85298.707
5 600848.SH 20191122 24.41 24.79 ... 0.05 0.2048 34373.94 83902.745
在daily()方法中还可以设置一个 fields参数,用于返回指定的 DataFrame对象的列数据,参数值是一个字符串,每个列名之间用逗号隔开,代码如下。
# 获取历史数据
df = ts_pro.daily(ts_code='600848.SH', start_date='20191101', end_date='20191201',fields='ts_code,open,high,low,close')
# 输出结果
print(df)
通过指定 fields参数之后,得到的 DataFrame 对象中就只包含了股票代码 (ts_code)、开盘价(open)、最高价 (high)、最低价 (low) 和收盘价 (close)。
ts_code open high low close
0 600848.SH 23.65 23.77 23.00 23.25
1 600848.SH 24.20 24.29 23.61 23.65
2 600848.SH 24.60 24.66 24.13 24.18
3 600848.SH 24.88 24.94 24.46 24.46
4 600848.SH 24.45 24.77 24.04 24.77
5 600848.SH 24.41 24.79 24.01 24.47
同样的方式,除日线数据之外,周线数据和月线数据则可以分别通过 weekly()和monthly()方法以同样的参数形式来获取。