Tushare数据接口注册网址:网页链接
上面这个片段是整个loop的基础,将股票的名称和代码单独存作变量。
temp_income = pro.income(ts_code=code, fields=''' ts_code,ann_date,f_ann_date,end_date,report_type, total_revenue,revenue,total_cogs,oper_cost, sell_exp,admin_exp,fin_exp,oper_exp,operate_profit, non_oper_income,total_profit,ebit,ebitda, undist_profit,distable_profit, comp_type,basic_eps,diluted_eps ''') #这部分代码是在获取利润表的数据,因为输出的变量比较多,所以看起来很复杂
#但内容其实超级简单,就是输入ts_code和fields这两个变量而已。 #关于具体的输出请查阅tushare pro的技术文档。
剩余的资产负债表部分(temp_balance)和现金流量表部分(temp_cf)部分和上述利润表的部分非常类似,我就不做多余的论述了。
链接:tushare利润表接口技术文档
下面聊一聊文档输出部分:
这一部分会用到pandas自带的功能来进行文档输出。
这部分内容的主要功能是将从接口处读取到的数据输出到本地,每一次调用接口都会给米哥的服务器造成一定的压力存在本地也可以在断网的时候进行数据操作。像财务报表这种一个季度才会更新一次的数据存在本地完全就够用了。
关于本地数据的读取问题我再找时间单独水一篇。嗯,我忘掉的可能性会比较大。
#将temp_cf这个文件通过调用.to_excel这个整合在class内部的函数进行输出#在实际运行代码的过程中记得将完整路径4个字替换成实际的路径
#%这个符号使得输出的字符里可以带有变量 temp_cf.to_excel("C:完整路径/HS300 CF/%s CF.xlsx"%name,index = False) temp_balance.to_excel("C:完整路径/HS300 BS/%s BS.xlsx"%name,index = False) temp_income.to_excel("C:完整路径/HS300 Income/%s Income.xlsx"%name,index = False) #print是用来提醒我进行到第几个。因为要大量调取数据,没有print提示的话可能会跑1-2分钟。
#tushare 的服务器偶尔会遇到被挤爆的情况(特别是股市一片绿的时候) #没有print无法判断是网络问题还是代码在运行,只是速度很慢。
print('we are geting stock %d\n\a' % i + name)
结果大概就是这样:
在这里插入图片描述
不得不承认pandas在输出数据方面集成得真好。相比之下R里的readxl和excel.link包在整合、输出效果上都略差一筹。
最后单独插入一个小环节,time包里的函数:time.sleep()
#这个函数是让代码停止运行60秒
time.sleep(60)
使用这个函数是为了绕开调取限制。pro的接口内,在获得足够多的积分之前,很多接口都有每分钟调取次数的限制,我现在的积分每分钟调取次数为80(我到现在都没搞懂这个80应该怎么算,不过不重要想办法规避掉就好)。限制调取次数是为了防止恶意调取数据对服务器造成的压力。
但手工每隔一分钟跑一次实在太难受了,所以自动暂停就变成了一个很不错的选择。
在for loop的最后加上一个if判断,在i == 80的整数倍时,连接上面的函数就可以完美避开每分钟调取限制。
话说我在这儿公开说这个米哥应该不会封我号吧…
当然,如果你的积分够高上述部分你可以不看…
这个小技巧在写爬虫类代码的时候也会派上用场的,记在心里总是没错的。
最后闲聊两句:
1.上述所有操作在你有了Wind/Bloomberg终端之后都会变得一点没必要,因为操作会超级简单。但是,这个简单是有价格的,而且还很贵。
2.这篇文章相比上篇其实更有实践意义。基于财务报表的几种定价方法(DCF,EV/EBIT等等)所需数据都可以采集到。
对价值投资者来说,财务报表可以说是重中之重,tushare分享的财务数据让价值投资者可以进行一系列的价值投资分析。不过现阶段可以获取到的数据质量算不上特别好,缺失值之类的情况颇为普遍。在真正进行建模分析之前还需要进行数据清理。
另外我个人认为价值学派在现在的A股市场不太行得通。包括机构投资者在内的许多资金,投资股票的目的不是长期持有而是短期投机。价值学派的很多想法也并不被认可,总体来说,价值投资在国内不是很受欢迎也难以在短期内实现超额收益。
现阶段的数据分析对价值投资者们的作用是免去大海捞针的时间,选出一些被明显低估或者高估的股票,供各位投资者进行进一步分析。距离直接依靠算法进行价值投资还有较远的距离。
感谢大家看完这篇文章!希望对你们的学习/工作有一点点的帮助。
最后贴上tushare的官网,更多的数据接口和范例代码可以在官网上查到: