今天分享下一个非常好用非常方便的数据平台tushare。Tushare大数据社区 id:561336
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程,能够为金融分析人员(以及我们在校学生)提供快速、整洁和多样的便于分析的数据,在数据获取方面极大地减轻工作量,更加专注于策略和模型的研究与实现上。
本人在校计算机研究生,导师分配了pj,是关于期货回测和期货价格预测。需要用到期货和股票相关的历史数据,而获取这些数据最方便的方式,就是通过Tushare库。
【总结一下Tushare的优点】
- 接口简洁方便易调用。对于第三方提供的API接口,相信各位童鞋都希望简洁易懂,方便调用,tushare就是直接install,然后使用官网的api接口直接调用即可,可方便。
- 免费。对于学生党来说,这是最最最重要的一点,我当初就是抵抗不了这样的诱惑,才果断选择了tushare。事实证明,特别好用。Tushare采取积分制,但这个积分制对于学生党和高校一族来说基本等同免费,几乎所有的数据都可以免费调用获取。
- 数据格式统一。
- 叮叮叮,看下面,tushare的金融数据应有尽有(比如我用到的期货数据):
【安装使用经验分享】
建议先安装python、pandas和lxml,接着使用下面的方式安装。
- 方式1:
pip install tushare
如果安装网络超时可尝试国内pip源,如pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple - 方式2:访问https://pypi.python.org/pypi/tushare/下载安装 ,执行 python setup.py install
- 方式3:访问https://github.com/waditu/tushare,将项目下载或者clone到本地,进入到项目的目录下,
执行: python setup.py install
当然,为了方便管理python版本,推荐使用Acaconda,一次安装包括了Python环境和全部依赖包,减少问题出现的几率,再使用上述方式或conda安装tushare。
好了,今天的分享先到这里,后面继续分享tushare数据使用经验。
【更】
因为使用tushare接口获取到的数据都是DataFrame类型的,所以你首先要确保安装pandas库,上面提到的建议使用Acaconda,后续不会出现很多问题.
安装完tushare库之后,就可以愉快的使用tushare进行玩耍了。
当然还需要获取token认证,点开个人主页,然后点击接口令牌,如下图示:
点击小眼睛就可以看到自己的token,记住token要在代码里加上才可以拿到数据。
import tushare as ts
token='*** your token ***'
ts.set_token(token)
pro = ts.pro_api() #接入api
data = pro.daily()
# 更多详细的使用接口登录tushare官网查看,都可以查到的
建议不要特别频繁的获取大量数据。Tushare官方免费提供数据,大量频繁下载容易造成别人的服务器GG。非常感谢tushare后面的团队,本着免费开源的思想促进整个互联网的进步。
【通过ts获取日线】简单分享
def write_one_stock_day_info(stock_data):
# 获取当天的日期
now_time = datetime.now().strftime('%Y%m%d')
data = ts.pro_bar(ts_code=f'{stock_data["ts_code"]}', adj='qfq', start_date=f'{stock_data["list_date"]}',
end_date=now_time)
try:
# 进行永久化存储,保存所有的数据到指定的文件夹中
data.to_excel(f'./股票数据/股票日线数据/{stock_data["ts_code"]}.xlsx', index=False)
print(f'股票:{stock_data["ts_code"]} 写入完成')
except:
# 连接数据库进行写入
cnn = pymysql.connect(**LINK_MYSQL)
cusur = cnn.cursor(pymysql.cursors.DictCursor)
sql = 'insert into stock(my_stock) values (%s)'
cusur.execute(sql, [stock_data["ts_code"]])
cnn.commit()
cnn.close()
print(f'股票:{stock_data["ts_code"]}下载失败')