查看原文
其他

利用tushare获取股票数据及实现可视化

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:方   言,中南财经政法大学金融学院

本文编辑:王子一

技术总编:张馨月

爬虫俱乐部云端课程

  爬虫俱乐部于2020年暑期在线上举办的Stata与Python编程技术训练营和Stata数据分析法律与制度专题训练营在不久前已经圆满结束啦~应广大学员需求,我们的课程现已在腾讯课堂全面上线,且继续提供答疑服务。现在关注公众号并在朋友圈转发推文《来腾讯课堂学Stata和Python啦》或《8月Stata数据分析法律与制度专场来啦!》,即可获得600元课程优惠券,集赞50个再领200元课程优惠券!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元!  
在上周的推文《利用tushare获取股票数据》中,我们介绍了tushare的安装以及如何获取股票交易的数据和数据,今天我们将继续介绍tushare的用法并实现数据的可视化,一起往下看吧~

一、获取实时分笔数据:get_realtime_quotes()

在tushare中,可以使用get_realtime_quotes()实时获取股票当前报价和成交信息,从而实现实时的监测交易量和价格的变化。
该函数需要传入的参数既可以是6位的数字股票代码,也可以是指数的代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)。此外,传入的参数类型可以容纳str、list、set或者pandas的Series对象。
其基本使用方法如下:
import tushare as tsdf = ts.get_realtime_quotes('000002') #单个股票实时行情 df[['code','name','price','bid','ask','volume','amount','time']] #需要显示的属性
执行结果:
  

返回结果从左至右分别表示股票代码、股票名称、当前的价格,竞买价(即“买一”报价)、竞卖价(即“卖一”报价)、成交量、成交金额以及当前的时间。

如果想同时获取多只股票的实时交易数据,可以将股票代码写入列表中传入,代码如下:
df = ts.get_realtime_quotes(['600900','000002','600519'])df[['code','name','price','bid','ask','volume','amount','time']]
运行结果:

除此之外,我们还可以运用该函数获取实时的指数数据,用法如下:
ts.get_realtime_quotes('sh')         #上证指数df = ts.get_realtime_quotes(['sh','sz','zxb','cyb']) #上证指数 深圳成指 中小板 创业板df[['name','pre_close','open','price','high','low','bid','ask','volume','amount','time']]

执行结果:

二、数据的存储

在使用tushare完成对数据的下载之后,我们通常要将这些数据保存到本地磁盘或数据服务器上。pandas内置的方法可以将DataFrame导出成excel文件、CSV格式文件等多种形式。比如,导出CSV文件可以使用df.to_csv方法。
使用方法:
import tushare as tsdf = ts.get_realtime_quotes('000002') #直接保存df.to_csv('D:/000002.csv',encoding = 'gb2312',index=False)#选取指定的列保存df.to_csv('D:/000002(1).csv',columns=['code','name','price','volume'],encoding = 'gb2312',index=False)
保存结果如图所示:

有些时候,可能需要将一些同类数据保存在同一个文件中,这时就需要将数据追加在同一个文件里,举例如下:
import tushare as tsimport osfilename = r'D:\bigfile.csv' #需要在工作路径下创建bigfile这个csv文件for code in ['000875', '600848', '000981']: df = ts.get_hist_data(code) if os.path.exists(filename): df.to_csv(filename, mode='a', header=None,index=False) else:        df.to_csv(filename,index=False)        #这里会提示前往新的pro接口,主要是新接口获取实时分笔交易数据需要更多的积分,大家可以在充值积分之后进行操作

【注:如果不考虑header,直接使用df.to_csv(filename, mode=’a’)即可,否则,每次循环都会把columns名称也append进去】

三、

结合使用matplotlib与tushare可以实现股价趋势的可视化。这里以茅台、五粮液、洋河、泸州老窖、山西汾酒、水井坊、口子窖、古井贡酒上市公司从2002年到2020年近18年的股价趋势进行分析。
首先,导入绘图需要使用的相关库:
import tushare as tsimport matplotlib.pyplot as pltfrom datetime import datetimeimport matplotlib.dates as mdates
接下来,定义绘制图像的函数:
def drawline(tcode, sdate, edate): datadf = ts.pro_bar( ts_code = tcode, start_date = sdate, end_date = edate, #前复权处理 adj = 'qfq') stockline = [datetime.strptime(d, '%Y%m%d').date() for d in datadf.trade_date] plt.plot(stockline, datadf.close, '-', label = datadf.ts_code[0])def drawmain(): #设置时间按“年月”的格式显示 plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y%m')) #X轴按年进行标记,还可以用MonthLocator()和DayLocator() plt.gca().xaxis.set_major_locator(mdates.YearLocator()), #自动旋转日期标记以避免重叠 plt.gcf().autofmt_xdate() #显示图例 plt.legend() #显示图片 plt.show()def taskmain(): for cd in tscode: drawline(cd, startdate, enddate)
之后,即可借助tushare完成绘制:
#在tushare官网注册后,进入个人中心得到唯一指定的tokents.set_token('dcc88f22cd05ab2fbccbd99effd88e377be19253e7e94a033cce8a20')#初始化apiapi = ts.pro_api()#指定起止日期startdate = '2002-01-01'enddate = '2020-01-01'#指定股票代码tscode = {'600519.SH','000858.SZ','000568.SZ','002304.SZ','600809.SH','000596.SZ','603589.SH','600779.SH'}#主程序taskmain()drawmain()
运行结果如下:
根据结果显示,贵州茅台一枝独秀,独领风骚,股价远远超过同行业企业~
以上就是利用tushare获取股票交易数据并实现可视化的过程啦,是不是会更加有利于分析股票数据!关于tushare的用法还有非常多干货,想了解更多就持续关注我们后续的推文哦~





对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐

从Excel到Stata的“摆渡车”——import excel命令

光阴十载,见证了《经济研究》中的“高被引”

利用tushare获取股票数据

         在Python中实现Stata的stack功能

这些年,经管类C刊都在研究什么?

Seminar | 眼见为实吗?高管面部可信度、审计师任期与审计费用

Seminar | 恐怖袭击与CEO薪酬

代码补全,主题更换,Jupyter Notebook原来可以这样用?

【爬虫实战】“双十一”微博热搜实时跟进

Stata中的数值型变量分类神器--recode

fs命令——我们的小帮手

【邀请函】听说你还在为处理表格头大?

用stack取代excel的数据重整操作吧

  日期数据处理

         Seminar | 委托贷款:打开中国影子银行的黑匣子

         Seminar | 电话会议中的"non-answer"  

        Python 爬虫必杀技:XPath

         面对相对路径和绝对路径的分岔口,你选对了吗?        空间数据可视化之spmap命令         快速计算两地距离——geodist命令介绍        Seminar | CFO:努力影响财务信息环境吗?
关于我们


微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存