想用python做股票分析的话就需要获取股市相关的数据。那么怎么获取呢,可能你会写个爬虫想从财经网站上爬取相关信息。不过有个更方便的方法,就是python有个很方便的财经接口tushare,只需要几行就可以获取到所有股票的信息。来废话不多说,我们开始吧
首先你需要下载python的扩展包,打开你的shell(我用的python3)
安装tushare扩展
pip3 install tushare
然后就可以写python脚本啦~,新建一个python脚本文件
导入扩展
import tushare as ts
as ts的意思是写代码时用ts就相当tushare了,省得打这么长的名字
接下来需要注册一个账户,来获取接口TOKEN
免费注册一个tushare账户,获取TOKEN
这里可以注册,如果觉得有用就支持我一下吧~嘿嘿
注册好后在个人主页里有一个接口TOKEN,一长串复制一下
根据接口示例,把接口TOKEN粘在python里
pro = ts.pro_api('接口TOKEN')
好了,现在准备工作做好了。炒鸡简单吧,就两行
然后干点啥呢,比如你想获取所有上市股票的信息,那么就这样写
**获取所有上市股票列表这里可以注册,如果觉得有用就支持我一下吧~嘿嘿
这里可以注册,如果觉得有用就支持我一下吧~嘿嘿
这里可以注册,如果觉得有用就支持我一下吧~嘿嘿
**
data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
会返回一个类型为
看一眼data的内容
ts_code symbol name area industry list_date
0 000001.SZ 000001 平安银行 深圳 银行 19910403
1 000002.SZ 000002 万科A 深圳 全国地产 19910129
2 000004.SZ 000004 国农科技 深圳 生物制药 19910114
3 000005.SZ 000005 世纪星源 深圳 环境保护 19901210
4 000006.SZ 000006 深振业A 深圳 区域地产 19920427
… … … … … … …
3863 688558.SH 688558 N国盛 江苏 机床制造 20200630
3864 688566.SH 688566 吉贝尔 江苏 化学制药 20200518
3865 688588.SH 688588 凌志软件 江苏 软件服务 20200511
3866 688598.SH 688598 金博股份 湖南 矿物制品 20200518
3867 688599.SH 688599 天合光能 江苏 电气设备 20200610
[3868 rows x 6 columns]
最后可以看到是一个3868x6的数据,就是获取到了3868只股票的数据
再比如想获取个股的日线行情数据
个股数据
df = pro.daily(ts_code='000001.SZ', start_date='20200608', end_date='20200610')
就会返回代码为‘000001’的股票在20200608到20200610之间的数据,后面的sz是深圳的缩写,必须要加上。还有一些股票后面是sh,就是上海。
看下df的内容
ts_code trade_date open high … change pct_chg vol amount
0 000001.SZ 20200610 13.71 13.71 … -0.18 -1.3168 580476.20 781995.749
1 000001.SZ 20200609 13.64 13.73 … 0.05 0.3671 474300.07 646895.834
2 000001.SZ 20200608 13.68 13.85 … 0.03 0.2208 585971.90 802115.792
[3 rows x 11 columns]
里面有交易日期(trade_date),开盘价(open),最高价(high),收盘价(close)等,由于数据较多,pandas的数据形式把中间部分给省略了。那么怎么查看df的所有数据呢。可以用一个命令
展开数据
df.unstack()
就会将数据展开显示,自己试一下吧
基本操作就这些,更多的可以上tushare.pro官网查看数据接口文档获取更多帮助。
最后再说说怎么从pandas数据中提取某一个内容,方式比较多,这里简单介绍两种。用个股信息df的内容为例,一种是根据ts_code trade_date open high等名称获取对应列的数据。
一列里的不同数据
获取open列
df['open']
因为我们获取了三天的数据,所以df[‘ts_code’]会返回三天各自的开盘价,因为最近日期的价格是排在最前面的,所以如果想获取6月10号的价格
获取6月10日的open价格
df['open'][0]
同理,9号的就是df[‘open’][1]
如果想获取10号的开盘,收盘价格。
一行里的不同数据
获取10号数据
df.iloc[0]
获取10号开盘和收盘
df.iloc[0]['open']
df.iloc[0]['close']
也可以写成df.iloc[0].open
好啦,现在可以根据自己的需要来处理分析股票数据了。祝大家都能挣大钱哈~~