其实这也是老师要求我们分析的一个项目,所以记录下分析的过程。
财务大数据作为大数据方向的一个热门方向,如果能学好,对于我们的今后工作是会有很大帮助的,同时目前市场人才需求也是很大的。
利用python构建财务报表,并进行一些财务分析。
利用python爬虫爬取A股数据报表
这一步是同学做的,写的还不错,实验步骤参考如下链接:
构建A股报表
import os,re,csv,math
years=[2017,2016,2015,2014,2013]
tot_retain_profits_ratio=[0,0,0,0,0]
#----------------------------------------打开文件夹中对应的三张Excel表-----------------------------------
path_root = 'F:\\data\\A股报表大全'
dirs = os.listdir(path_root)
for dir in dirs:
path_stock=os.path.join(path_root,dir)
path_fzb=os.path.join(path_stock,'fzb')
path_llb=os.path.join(path_stock,'llb')
path_lrb=os.path.join(path_stock,'lrb')
ls=dir.split('_')
file_count = 0
for fn in os.listdir(path_fzb): #部分公司上市少于5年,目录下的文件数少于5个,获得具体数量,为以下循环提供数据
file_count = file_count + 1
if file_countelse:
years_cnt=len(years)
for i in range(years_cnt):
if ls[0].startswith('6'): #沪市A股代码以数字6打头
path_fzb_year=os.path.join(path_fzb,'sh_fzb_'+ls[0]+'_'+str(years[i])+'.csv')
path_llb_year=os.path.join(path_llb,'sh_llb_'+ls[0]+'_'+str(years[i])+'.csv')
path_lrb_year=os.path.join(path_lrb,'sh_lrb_'+ls[0]+'_'+str(years[i])+'.csv')
else:
path_fzb_year=os.path.join(path_fzb,'sz_fzb_'+ls[0]+'_'+str(years[i])+'.csv')
path_llb_year=os.path.join(path_llb,'sz_llb_'+ls[0]+'_'+str(years[i])+'.csv')
path_lrb_year=os.path.join(path_lrb,'sz_lrb_'+ls[0]+'_'+str(years[i])+'.csv')
file_llb=csv.reader(open(path_llb_year, 'r'))
file_lrb=csv.reader(open(path_lrb_year, 'r'))
#----------------------------------------取出想分析的数据列进行分析----------------------------------------------------
for j,row in enumerate(file_lrb):
if j==4:
tot_revenue=float(row[8])#总营业收入
tot_retain_profits=float(row[33])#归属母公司净利润
if tot_revenue>0:
tot_retain_profits_ratio[i]=tot_retain_profits/tot_revenue#净利润率
#print(tot_revenue,tot_retain_profits)
elif j==3 and years[i]==2017:
tot_revenue=float(row[8])
tot_retain_profits=float(row[33])
if tot_revenue>0:
tot_retain_profits_ratio[i]=tot_retain_profits/tot_revenue
#print(tot_revenue,tot_retain_profits)
else:
pass
#and math.median(tot_retain_profits_ratio)> 0.15
if math.fsum(tot_retain_profits_ratio)/5 > 0.15 :
print(dir,tot_retain_profits_ratio)
这样就可以获取不同公司A股报表数据了,并进行一些财务分析。
最后我构建了3000多家公司的财务分析表,类似财报说(这是一个财务分析有名的网站)网站效果:
这里的0是由于一些报表信息的确实无法计算,所以统一用0代替。计算公式参考财报说的FAQ公式
具体代码被我放到github上:https://github.com/1qweasdzxc/python
这些知识都源自于《不懂财报也能轻松选出赚钱绩效股-李明樟》,有兴趣可以看看。