300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 利用Tushare获取金融数据

利用Tushare获取金融数据

时间:2022-05-21 23:00:15

相关推荐

利用Tushare获取金融数据

利用Tushare获取金融数据

开发背景Tushare社区Tushare安装Tushare使用Tushare获取金融数据1.获取A股列表2.获取单只A股行情数据3.获取多只A股数据4.将数据储存至本地5.读取本地数据总结

开发背景

笔者是在校生,STEM专业,对量化投资领域很感兴趣,刚入门。平时闲暇时光读读金融书籍,并用代码进行实战演练。此篇是笔者的第一篇blog,尝试通过Tushare获取股票的日常交易数据,为后续进行股票分析做准备。

笔者tushare ID:414988

Tushare社区

Tushare社区(https://tushare.pro/)是一个大数据开放社区,免费提供各类金融数据 , 助力智能投资与创新型投资。现Tushare使用pro接口,具有数据丰富,获取简单,落地方便等优点。

Tushare拥有丰富的数据内容,如股票、基金、期货、数字货币等行情数据,公司财务、基金经理等基本面数据。同时,SDK开发包支持语言,同时提供HTTP Restful接口,最大程度方便不同人群的使用。并且提供多种数据储存方式,如Oracle、MySQL,MongoDB、HDF5、CSV等,为数据获取提供了性能保证。

Tushare安装

在命令行,输入以下代码

pip install tushare

安装最新版tushare。安装完毕后,在命令行输入python,回车;输入

import tushare as ts

若没报错,说明安装成功。

Tushare使用

打开jupyter notebook,输入

import tushare as tstoken = 'your token' # 这里输入tushare官网下用户接口tokenpro = ts.pro_api(token)

同时,再import两个数据分析的常用库pandas,numpy和一个python画图包Matplotlib。

import pandas as pdimport numpy as npimport matplotlib.pyplot as plt

为了防止图上的中文字符生成乱码,再用以下代码规避。

from pylab import mplmpl.rcParams['font.sans-serif']=['SimHei']mpl.rcParams['axes.unicode_minus']=False

Tushare获取金融数据

1.获取A股列表

使用接口pro.stock_basic()获取沪深股票列表(以下输入输出参数只选取重要的进行分析)。

输入参数:

输出参数:

获取当前上市的股票代码、简称、注册地、行业、上市时间等数据。

basic = pro.stock_basic(list_status='L')basic.head() # 查看前五条ts_codesymbolnameareaindustrymarketlist_date0000001.SZ000001平安银行深圳银行主板199104031000002.SZ000002万科A深圳全国地产主板199101292000004.SZ000004国华网安深圳互联网主板199101143000005.SZ000005世纪星源深圳环境保护主板199012104000006.SZ000006深振业A深圳区域地产主板19920427

由上输出可以发现,tushare提供的数据丰富而齐全,可以放心使用。

2.获取单只A股行情数据

获取单只A股的日线行情pro.daily()或周线行情pro.weekly()或月线行情pro.monthly()。

pro.daily()使用方法如下:

输入参数

输出参数

以获取深物业A(000011.SZ)的日行情数据为例。

shenwuyeA_daily = pro,daily(ts_code='000011.SZ', start_date='0101', end_date='0101')shenwuyeA_daily.head()ts_code trade_dateopenhighlow close pre_closechangepct_chg volamount0000011.SZ203112.1412.3611.9512.1712.160.010.082265023.0179013.2181000011.SZ203011.7912.2511.5212.1611.850.312.616091820.88109824.0912000011.SZ202911.5612.2411.5611.8511.480.373.223078616.5393669.8873000011.SZ202811.8211.8811.4311.4811.83-0.35-2.958655898.9465020.8684000011.SZ202511.7811.9311.6311.8311.810.020.169345828.8454148.797

我们可以获取平安银行股票的每日交易信息,开盘价、最高价、最低价、收盘价、涨跌情况以及成交量情况。

同样的,我们获取周线行情和月线行情。

shenwuyeA_weekly = pro.weekly(ts_code='000001.SZ', start_date='0101', end_date='0101')shenwuyeA_weekly.head()ts_code trade_datecloseopenhighlow pre_close changepct_chg vol amount0000011.SZ203112.1711.8212.3611.4311.830.340.028729135936.03.475281e+081000011.SZ202511.8312.3912.6811.6312.39-0.56-0.045233009861.04.017601e+082000011.SZ12.3912.2912.7912.1712.280.110.009029681407.03.703677e+083000011.SZ201112.2813.5813.6012.0613.58-1.30-0.095730135472.03.882492e+084000011.SZ200413.5813.4614.4513.2313.490.090.006747775410.06.541158e+08

shenwuyeA_monthly = pro.monthly(ts_code='000001.SZ', start_date=0101', end_date='0101')shenwuyeA_monthly.head()ts_code trade_datecloseopenhighlow pre_closechangepct_chg volamount0000011.SZ203112.1713.7614.0411.4313.82-1.65-0.1194156418014.01.975291e+091000011.SZ203013.8214.0815.3713.2513.99-0.17-0.0122163400353.02.318080e+092000011.SZ203013.9918.1019.9613.8517.86-3.87-0.2167198585828.03.442298e+093000011.SZ203017.8620.2720.3415.9720.17-2.31-0.1145371551360.06.572802e+094000011.SZ203120.1726.6031.8720.0826.05-5.88-0.2257572318794.01.562482e+10

3.获取多只A股数据

我们定义获取数据函数:

def obtain_stocks(start_date, end_date, stock_code_list=None):if stock_code_list is None:stock_code_list = pro.stock_basic(list_status='L').ts_codestock_data = {}for stock_code in stock_code_list:stock_data[stock_code] = pro.daily(ts_code=stock_code, start_date=start_date, end_date=end_date)return stock_data

返回所需要的stock数据。

4.将数据储存至本地

def save_stock_data(all_stocks_data):for stock_code, stock_data in all_stocks_data.items():stock_data.to_csv('your path/'+stock_code+'.csv', header=True, index=False)

其中,your path对应你需要保存的路径文件夹,每个股票数据保存为一个csv。

5.读取本地数据

import osdef read_stock_data(path_name):# 注意path_name是文件的保存路径文件夹名all_files = os.walk(path_name) # 读取文件夹中的所有文件file_names = []for path, _, file_list in all_files:for file_name in file_list:file_names.append(os.path.join(file_name))# 存入字典df = {}code = [name.split('.')[0] for name in filenames] # 分离出股票代码for i in range(len(file_names)):file_name = path_name + file_names[i]df[code[i]] = pd.read_csv(file_name)return df, code# 返回股票数据以及代码

总结

Tushare是一个性能优异的大数据社区,同时高校学生和老师以及机构研究者均可获得免费积分进行数据的获取。

笔者后续会对数据进行分析与理解,待续…

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。