利用PYTHON爬取上市公司年報并生成財務分析

?因為小編是一個比較懶的人,所以有時候就想能不能通過一些方式提高日常工作中那些定時定點需要做的工作,于是在閑暇時間抱著聯系python的目的寫下了這段關于財務分析的代碼,感謝去的朋友可以看看,或者可以復制代碼再去測試,其中文字部分或者財務分析數據方面有什么問題,歡迎指正。

? ? ? ?此段代碼主要包括三個部分,第一部分是數據獲取,此部分通過python從網易財經網站爬取了目標公司的年報數據,第二部分就是數據清洗和整理,第三部分就是財務分析文檔的形成。

以下是代碼部分:

from?docx?import?Document??

from?docx.enum.text?import?WD_ALIGN_PARAGRAPH??

from?docx.oxml.ns?import?qn?#?中文格式??

from?docx.shared?import?Pt?#?磅數??

from?docx.shared?import?Inches?#?圖片尺寸??

from?bs4?import?BeautifulSoup??

from?urllib.request?import?urlopen??

import?pandas?as?pd??

import?numpy?as?np??

import?matplotlib.pyplot?as?plt??

import?os??


c_name?=?input('請輸入公司名稱:')??

stock_code?=?input("請輸入股票代碼:")??

st?=?input('請輸入開始年份:')??

et?=?input('請輸入結束年份:')??


data_list?=['zcfzb','lrb','xjllb']??

adrees?='http://quotes.money.163.com'??

y_list?=['報告日期']+[str(m)+'年'?for?m?in?list(range(int(st)-1,int(et)+1))][::-1]??



for?i?in?data_list:??

url?='http://quotes.money.163.com/f10/'+i+'_'+stock_code+'.html?type=year'??


????html?=?urlopen(url)??

soup?=?BeautifulSoup(html,'lxml')??

div?=soup.findAll('div',{'class':'inner_box'})??

df?=?BeautifulSoup(str(div[0]),features='lxml')??

a?=?df.findAll('a')??

for?each?in?a:??

if?each.string=='下載數據':??

new_html?=?adrees?+?each.get("href")??

????????????html1?=?urlopen(new_html)??

soup1?=?BeautifulSoup(html1,features='lxml')??

txt?=?soup1.text.replace('(萬元)','').replace('--','0')??

csv?=?open(r'C:\Users\admin\Desktop\python_data\財務分析\數據采集\%s%s.csv'%(stock_code,i),'w',encoding='utf-8')?.write(txt)??


data?=?pd.read_csv(r'C:\Users\admin\Desktop\python_data\財務分析\數據采集\%s%s.csv'%(stock_code,i))??

list1?=?list(range(int(data.columns[-2][:4]),?int(data.columns[1][:4])?+?1))[::-1]??

new_list?=?['報告日期']+[str(i)?+?'年'?for?i?in?list1]?+?[data.columns[-1][:4]]??

????????????data.columns?=?new_list??

writer?=?pd.ExcelWriter(r'C:\Users\admin\Desktop\python_data\財務分析\數據采集\%s%s.xlsx'?%(stock_code,i))??

data.to_excel(writer,index=False)??

????????????writer.save()??

????????????writer.close()??


p_list?=?os.listdir(r'C:\Users\admin\Desktop\python_data\財務分析\數據采集')??

for?name?in?p_list:??

if?name.endswith('.csv'):??

os.remove(r'C:\Users\admin\Desktop\python_data\財務分析\數據采集\%s%s.csv'%(stock_code,i))??



#讀取已有數據并按照所需的列數進行合并??

path_list?=?os.listdir(r'C:\Users\admin\Desktop\python_data\財務分析\數據采集')??

data?=?pd.DataFrame()??

for?path?in?path_list:??

fp?=?r'C:\Users\admin\Desktop\python_data\財務分析\數據采集\%s'?%?(path)??

dfs?=?pd.read_excel(fp,None,usecols=y_list)??

????keys?=?dfs.keys()??

for?i?in?keys:??

????????df1?=?dfs[i]??

????????data?=?pd.concat([df1,data])??

data?=?data.fillna(0)??

data['報告日期']?=data['報告日期'].str.strip()??

data?=?data.drop_duplicates(subset=['報告日期'],keep='first')??

data?=?data.set_index('報告日期')??

hb?=?data.drop('%s年'%?(int(st)-1),axis=1)??



#定義所需函數??

#財務指標函數定義??

def?hs1(cs1,cs2):??

return?round(cs1/cs2,2)??


def?hs2(cs1,cs2,cs3):??

return?round((cs1-cs2)/cs3,2)??


def?hs3(cs1,cs2,cs3):??

return?round((cs1+cs2)/cs3,2)??


def?hs4(cs1,cs2,cs3):??

return?round(cs1/(cs2-cs3),2)??


def?hs5(cs1,cs2,cs3):??

return?round(cs1/(cs2+cs3),2)??


def?hs6(cs1,cs2,cs3,cs4):??

return?round((cs1-cs2-cs3)/cs4,2)??


def?hs7(cs1,cs2):??

return?round((cs1-cs2)/cs1,2)??


def?change(x,y):??

if?x.loc[y,'%s年'?%?et]?<?x.loc[y,'%s年'?%?st]:??

return?('%s由%s年的%.2f萬元,變化為%s年的%.2f萬元,變化數為%.2f萬元,變化率為%.2f'?%??

(y,st,x.loc[y,'%s年'?%?st],et,x.loc[y,'%s年'?%?et],round(x.loc[y,'%s年'?%?et]-x.loc[y,'%s年'?%?st],2),??

round((x.loc[y,'%s年'?%?et]-x.loc[y,'%s年'?%?st])/x.loc[y,'%s年'?%?st],2)))??

else:??

return?('%s由%s年的%.2f萬元,變化為%s年的%.2f萬元,變化數為%.2f萬元,變化率為%.2f'?%??

(y,st,x.loc[y,'%s年'?%?st],et,x.loc[y,'%s年'?%?et],round(x.loc[y,'%s年'?%?et]?-?x.loc[y,'%s年'?%?st],2),??

round((x.loc[y,'%s年'?%?et]?-?x.loc[y,?'%s年'?%?st])/x.loc[y,?'%s年'?%?st],2)))??


def?up(x,y):??

if?x.loc[y,'%s年'?%?et]?<?x.loc[y,'%s年'?%?st]:??

return?('%s指標由%s年的%.2f,變化為%s年的%.2f,變化數為%.2f,由此看出該公司的%s指標變弱'?%??

(y,st,x.loc[y,'%s年'?%?st],et,x.loc[y,'%s年'?%?et],round(x.loc[y,'%s年'?%?et]-x.loc[y,'%s年'?%?st],2),y))??

else:??

return?('%s指標由%s年的%.2f,變化為%s年的%.2f,變化數為%.2f,由此看出該公司的%s指標變強'?%??

(y,st,x.loc[y,'%s年'?%?st],et,x.loc[y,?'%s年'?%?et],round(x.loc[y,'%s年'?%?et]-x.loc[y,'%s年'%?st],2),y))??


def?down(x,y):??

if?x.loc[y,'%s年'?%?et]?<?x.loc[y,'%s年'?%?st]:??

return?('%s指標由%s年的%.2f,變化為%s年的%.2f,變化數為%.2f,由此看出該公司的%s指標變強'?%??

(y,st,x.loc[y,'%s年'?%?st],et,x.loc[y,'%s年'?%?et],round(x.loc[y,'%s年'?%?et]-x.loc[y,'%s年'?%?st],2),y))??

else:??

return?('%s指標由%s年的%.2f,變化為%s年的%.2f,變化數為%.2f,由此看出該公司的%s指標變弱'?%??

(y,st,x.loc[y,'%s年'?%?st],et,x.loc[y,?'%s年'?%?et],round(x.loc[y,'%s年'?%?et]-x.loc[y,'%s年'%?st],2),y))??

#計算平均資產總額??

def?pj_data(xm):??

????pj_data?=?[]??

for?i?in?range(len(xm)-1):??

if?i?<?len(xm):??

pjz?=?round((xm[i]?+?xm[i+1])/2,2)??

????????????pj_data.append(pjz)??

return?pj_data??


#計算增長率??

def?zzl_data(xm):??

????zzl_data?=?[]??

for?i?in?range(len(xm)-1):??

if?i?<?len(xm):??

zzl?=?round((xm[i]-xm[i+1])/xm[i+1],2)??

????????????zzl_data.append(zzl)??

return?zzl_data??


#畫圖函數??

def?fig(x,y):??

????fig?=?plt.figure()??

for?i?in?range(len(x.index)):??

????????plt.plot(x.columns.values,x.iloc[i],label?=x.index[i])??

????plt.title(y)??

plt.legend(loc?='upper?right')??

fig.savefig(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\%s.png'%?y)??

return?fig??


#生成表格函數??

def?data_table(x,y):??

t?=?d1.add_table(rows=y.shape[0]?+?1,?cols=y.shape[1]?+?1,?style='Table?Grid')??

for?n?in?range(len(x)):??

t.cell(0,?n).text?=?x[n]??

for?m?in?range(len(list(y.index))):??

t.cell(m?+1,?0).text?=?list(y.index)[m]??


for?j?in?range(y.shape[0]):??

for?i?in?range(y.shape[1]):??

t.cell(j?+1,?i?+?1).text?=?str(y.iloc[j,?i])??

return?t??


#計算所需財務數據??

#財報主要財務數據??

zy?=?hb.loc[['流動資產合計','非流動資產合計','資產總計','流動負債合計','非流動負債合計','負債合計','所有者權益(或股東權益)合計','營業總收入',??

'營業總成本','利潤總額','凈利潤']]??


#?#資產結構主要數據??

zc?=?hb.loc[['貨幣資金','應收賬款','預付款項','其他應收款','存貨','流動資產合計','長期股權投資','固定資產','在建工程','無形資產',??

'長期待攤費用','非流動資產合計']]??


zc2?=?hb.loc[['貨幣資金','應收賬款','預付款項','其他應收款','存貨','長期股權投資','固定資產','在建工程','無形資產',??

'長期待攤費用']]??


zc_bh?=?round(abs(zc2['%s年'%et]-zc2['%s年'%st]),2)??


zc1?=?round(hb.loc[['貨幣資金','應收賬款','預付款項','其他應收款','存貨','長期股權投資','固定資產','在建工程','無形資產',??

'長期待攤費用']]/hb.loc['資產總計'],2)??


#負債結構主要數據??

fz?=?hb.loc[['短期借款','應付賬款','預收賬款','應付職工薪酬','應交稅費','其他應付款','流動負債合計','長期借款','長期應付款',??

'非流動負債合計']]??


fz2?=?hb.loc[['短期借款','應付賬款','預收賬款','應付職工薪酬','應交稅費','其他應付款','長期借款','長期應付款']]??


fz_bh?=?round(abs(fz2['%s年'%et]-fz2['%s年'%st]),2)??



fz1?=?round(hb.loc[['短期借款','應付賬款','預收賬款','應付職工薪酬','應交稅費','其他應付款','長期借款','長期應付款']]/hb.loc['負債合計'],2)??


#股本結構主要數據??

qy?=?hb.loc[['實收資本(或股本)','資本公積','盈余公積','未分配利潤','所有者權益(或股東權益)合計']]??


qy2?=?hb.loc[['實收資本(或股本)','資本公積','盈余公積','未分配利潤']]??


qy_bh?=?round(abs(qy2['%s年'%et]-qy2['%s年'%st]),2)??


qy1?=?round(hb.loc[['實收資本(或股本)','資本公積','盈余公積','未分配利潤']]/hb.loc['所有者權益(或股東權益)合計'],2)??


#利潤表主要數據??

lr?=?hb.loc[['營業總收入','營業收入','其他業務收入','營業總成本','營業成本','其他業務成本','銷售費用','管理費用','財務費用','其他業務利潤',??

'營業利潤','利潤總額','所得稅費用','凈利潤']]??


#現金流量表主要數據??

xj?=?hb.loc[['經營活動現金流入小計','經營活動現金流出小計','經營活動產生的現金流量凈額','投資活動現金流入小計','投資活動現金流出小計',??

'投資活動產生的現金流量凈額','籌資活動現金流入小計','籌資活動現金流出小計','籌資活動產生的現金流量凈額','現金及現金等價物凈增加額']]??



#計算償債能力指標??

ldbl=hs1(cs1=hb.loc['流動資產合計'],cs2=hb.loc['流動負債合計'])????????????????#流動比率??

sdbl=hs2(cs1=hb.loc['流動資產合計'],cs2=hb.loc['存貨'],cs3=hb.loc['流動負債合計'])??????????#速動比率??

zcfzl=hs1(cs1=hb.loc['負債合計'],cs2=hb.loc['資產總計'])???????????????????????????????????#資產負債率??

gdqybl=hs1(cs1=hb.loc['所有者權益(或股東權益)合計'],cs2=hb.loc['資產總計'])????????????????????????????#股東權益比率??

cqfzbl=hs1(cs1=hb.loc['非流動負債合計'],cs2=hb.loc['資產總計'])?????????????????????????????#長期負債比率??

cqzwyu=hs4(cs1=hb.loc['非流動負債合計'],cs2=hb.loc['流動資產合計'],cs3=hb.loc['流動負債合計'])???#長期債務與營運資金比率??

fzsy=hs1(cs1=hb.loc['負債合計'],cs2=hb.loc['所有者權益(或股東權益)合計'])???????????????????????????????????#負債與所有者權益比率??

czcz=hs5(cs1=hb.loc['非流動負債合計'],cs2=hb.loc['所有者權益(或股東權益)合計'],cs3=hb.loc['非流動負債合計'])???#長期資產與長期資金比率??

zbhl=hs1(cs1=hb.loc['非流動負債合計'],cs2=hb.loc['所有者權益(或股東權益)合計'])???????????????????????????????#資本化比率??

zbgdh=hs2(cs1=hb.loc['資產總計'],cs2=hb.loc['非流動負債合計'],cs3=hb.loc['所有者權益(或股東權益)合計'])?????????#資本固定化比率??

cqbl=hs1(cs1=hb.loc['負債合計'],cs2=hb.loc['所有者權益(或股東權益)合計'])?????????????????????????????????????#產權比率??


cz=pd.DataFrame({'流動比率':ldbl,'速動比率':sdbl,'資產負債率':zcfzl,'股東權益比率':gdqybl,'長期負債比率':cqfzbl,??

'長期債務與營運資金比率':cqzwyu,'負債與所有者權益比率':fzsy,??

'長期資產與長期資金比率':czcz,'資本化率':zbhl,'資本固定化比率':zbgdh,'產權比率':cqbl})??

cz?=?cz.T??


cz_bh?=?cz.std(axis?=1)??


#?計算盈利能力指標??

zzclr?=?hs1(cs1?=?hb.loc['利潤總額'],cs2?=?pj_data(xm=?data.loc['資產總計']))??

zzcjlr?=?hs1(cs1?=?hb.loc['凈利潤'],cs2?=pj_data(xm=?data.loc['資產總計']))??

yylr?=hs1(cs1?=?hb.loc['營業利潤'],cs2?=hb.loc['營業總收入']?)??

jzcsy?=?hs1(cs1?=?hb.loc['凈利潤'],cs2?=hb.loc['所有者權益(或股東權益)合計']?)??

gbbc?=?hs1(cs1?=?hb.loc['凈利潤'],cs2?=hb.loc['實收資本(或股本)']?)??

xsml?=?hs7(cs1=hb.loc['營業收入'],cs2=hb.loc['營業成本'])??


yl?=?pd.DataFrame({'總資產利潤率':zzclr,'總資產凈利潤率':zzcjlr,'營業利潤率':yylr,'凈資產收益率':jzcsy,'股本報酬率':gbbc,'銷售毛利率':xsml})??

yl?=?yl.T??

yl_bh?=?yl.std(axis?=1)??


#計算運營能力指標??

yszkzzl?=?hs1(cs1=hb.loc['營業收入'],cs2=pj_data(xm=data.loc['應收賬款']))???#?應收賬款周轉率??

yszkzzt?=?round(360/yszkzzl,2)????#?應收賬款周轉天數??

chzzl?=?hs1(cs1=hb.loc['營業成本'],cs2=pj_data(xm=data.loc['存貨']))???#?存貨周轉率??

chzzt?=?round(360/chzzl,2)????#?存貨周轉天數??

zzzzzl?=?hs1(cs1=hb.loc['營業總收入'],cs2=pj_data(xm=data.loc['資產總計']))????#?總資產周轉率??

zzzzzt?=?round(360/zzzzzl,2)????#?總資產周轉天數??

ldzczzl?=?hs1(cs1=hb.loc['營業收入'],cs2=pj_data(xm=data.loc['流動資產合計']))???#?流動資產周轉率??

ldzczzt?=?round(360/ldzczzl,2)???????#?流動資產周轉天數??


yy?=?pd.DataFrame({'應收賬款周轉率':yszkzzl,'應收賬款周轉天數':yszkzzt,'存貨周轉率':chzzl,'存貨周轉天數':chzzt,??

'總資產周轉率':zzzzzl,'總資產周轉天數':zzzzzt,'流動資產周轉率':ldzczzl,'流動資產周轉天數':ldzczzt})??

yy?=?yy.T??

yy_bh?=?yy.std(axis?=1)??


#?計算成長能力指標??

zyyw?=?zzl_data(xm=data.loc['營業收入'])??#?主營業務收入增長率??

jlrzz?=?zzl_data(xm=data.loc['凈利潤'])??#?凈利潤增長率??

jzzzz?=?zzl_data(xm=data.loc['所有者權益(或股東權益)合計'])?#?凈資產增長率??

zzzzz?=?zzl_data(xm=data.loc['資產總計'])?#?總資產增長率??


czn?=?pd.DataFrame({'主營業務收入增長率':zyyw,'凈利潤增長率':jlrzz,'凈資產增長率':jzzzz,'總資產增長率':zzzzz})??

czn?=?czn.T??

czn.columns?=?[str(m)+'年'?for?m?in?list(range(int(st),int(et)+1))][::-1]??

czn_bh?=?czn.std(axis?=1)??


writer?=?pd.ExcelWriter(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\%s%s年至%s年財務分析基數數據表.xlsx'?%(c_name,st,et))??

zy.to_excel(writer,sheet_name='財報主要數據表')??

zc.to_excel(writer,sheet_name='資產結構表')??

fz.to_excel(writer,sheet_name='負債結構表')??

qy.to_excel(writer,sheet_name='股本結構表')??

lr.to_excel(writer,sheet_name='利潤表主要數據表')??

xj.to_excel(writer,sheet_name='現金流量表主要數據表')??

cz.to_excel(writer,sheet_name='償債能力主要數據表')??

yl.to_excel(writer,sheet_name='盈利能力主要數據表')??

yy.to_excel(writer,sheet_name='運營能力主要數據表')??

czn.to_excel(writer,sheet_name='成長能力主要數據表')??

writer.save()??

writer.close()??


#制作各種所需圖??

#財務主要數據變化趨勢圖??

fig(x=zy,y='財務主要數據變化趨勢圖')??


#資產結構變化趨勢圖??

fig(x=zc,y='資產結構變化趨勢圖')??


#負債結構變化趨勢圖??

fig(x=fz,y='負債結構變化趨勢圖')??


#股本結構變化趨勢圖??

fig(x=qy,y='股本結構變化趨勢圖')??


#利潤表主要數據變化趨勢圖??

fig(x=lr,y='利潤表主要數據變化趨勢圖')??


#現金流量表主要數據變化趨勢圖??

fig(x=xj,y='現金流量表主要數據變化趨勢圖')??


#償債能力主要指標變化趨勢圖??

fig(x=cz,y='償債能力主要指標變化趨勢圖')??


#盈利主要指標變化趨勢圖??

fig(x=yl,y='盈利能力主要指標變化趨勢圖')??


#運營能力主要指標變化趨勢圖??

fig(x=yy,y='運營能力主要指標變化趨勢圖')??


#成長能力主要指標變化趨勢圖??

fig(x=czn,y='成長能力主要指標變化趨勢圖')??



#文章正文部分??

#文章正文標題部分??

d1?=?Document()??

p1?=d1.add_paragraph()??

p1.alignment?=?WD_ALIGN_PARAGRAPH.CENTER??

r1?=?p1.add_run('%s財務分析報告'?%?c_name?)??

r1.font.size?=?Pt(14)??

r1.font.bold?=True??

r1.font.name?='仿宋_GB2312'??

r1._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??


#文章正文第一部分——財報主要數據??

p2?=d1.add_paragraph()??

r2?=?p2.add_run('???一、公司基本財務數據?\n ??下表數據為%s%s年至%s年主要財務數據:'%(c_name,st,et))??

r2.font.size?=?Pt(10)??

#?r2.font.bold?=?True??

r2.font.name?='仿宋_GB2312'??

r2._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??


#插入財報主要數據表格??

data_table(x=y_list,y=zy)??


#財報主要數據的描述??

p22?=?d1.add_paragraph()??

run22?=?p22.add_run('????從上表數據中可以看出,%s;%s;%s;%s;%s;%s;%s。\n ????下圖為各項數據的變化趨勢圖:'?%?(change(x=zy,y?=?'資產總計'),??

change(x=zy,y?='負債合計'),change(x=zy,y?=?'所有者權益(或股東權益)合計'),change(x=zy,y?=?'營業總收入'),change(x=zy,y?=?'營業總成本'),??

change(x=zy,y?='利潤總額'),change(x=zy,y?=?'凈利潤')))??

run22.font.name?="仿宋_GB2312"??

run22._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??

run22.font.size?=?Pt(10)??


#插入財報主要數據變化趨勢圖??

tu1?=?d1.add_picture(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\財務主要數據變化趨勢圖.png',width=Inches(6),height=Inches(4))??

tu1.alignment?=?WD_ALIGN_PARAGRAPH.CENTER??

#??

#文章正文第二部分——資產結構??

p3?=d1.add_paragraph()??

r3?=?p3.add_run('???二、資產負債表分析?\n ? 1、資產結構分析\n ???下表數據為%s%s年至%s年資產結構分析主要數據。'%(c_name,st,et))??

r3.font.size?=?Pt(10)??

#?r3.font.bold?=?True??

r3.font.name?='仿宋_GB2312'??

r3._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??


#插入資產結構表格??

data_table(x=y_list,y=zc)??


p31?=?d1.add_paragraph()??

run31?=?p31.add_run('????'??

'從上表數據中可以看出,在%s年至%s年度中%s;%s;其中變化最大的項目為%s;變化最小的項目為%s。'??

'在%s年度的資產結構中占比最大的項目%s,占比比例為%.2f,此項目%s年度的占比為%.2f;'??

'占比最小的項目為%s其中占比為%.2f,此項目%s年度的占比為%.2f。'??

'以上是對資產結構的整體介紹,其他具體項目的變化趨勢見下圖:'?%(??

????st,et,??

change(x=zc,y?='流動資產合計'),change(x=zc,y?=?'非流動資產合計'),change(x=zc2,y?=?zc_bh.idxmax()),change(x=zc2,y?=?zc_bh.idxmin()),??

et,zc1['%s年'%et].idxmax(),zc1.loc[zc1['%s年'%et].idxmax(),'%s年'%et],st,zc1.loc[zc1['%s年'%st].idxmax(),'%s年'%st],??

zc1['%s年'%et].idxmin(),zc1.loc[zc1['%s年'%et].idxmin(),'%s年'%et],st,zc1.loc[zc1['%s年'%st].idxmin(),'%s年'%st]))??

run31.font.name?="仿宋_GB2312"??

run31._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??

run31.font.size?=?Pt(10)??


#??

tu2?=?d1.add_picture(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\資產結構變化趨勢圖.png',width=Inches(6),height=Inches(4))??

tu2.alignment?=?WD_ALIGN_PARAGRAPH.CENTER??



p4?=d1.add_paragraph()??

r4?=?p4.add_run('?? 2、負債結構分析\n ???下表數據為%s%s年至%s年負債結構分析主要數據。'%(c_name,st,et))??

r4.font.size?=?Pt(10)??

#?r4.font.bold?=?True??

r4.font.name?='仿宋_GB2312'??

r4._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??

#??

#插入負債結構表??

data_table(x=y_list,y=fz)??


p41?=?d1.add_paragraph()??

run41?=?p41.add_run('????'??

'從上表數據中可以看出,在%s年至%s年度中%s;%s;其中變化最大的項目為%s;變化最小的項目為%s。'??

'在%s年度的負債結構中占比最大的項目%s,占比比例為%.2f,此項目%s年度的占比為%.2f;'??

'占比最小的項目為%s其中占比為%.2f,此項目%s年度的占比為%.2f。'??

'以上是對負債結構的整體介紹,其他具體項目的變化趨勢見下圖:'?%(??

????st,et,??

change(x=fz,y='流動負債合計'),change(x=fz,y='非流動負債合計'),change(x=fz2,y=fz_bh.idxmax()),change(x=fz2,y=fz_bh.idxmin()),??

et,fz1['%s年'%et].idxmax(),fz1.loc[fz1['%s年'%et].idxmax(),'%s年'%et],st,fz1.loc[fz1['%s年'%st].idxmax(),'%s年'%st],??

fz1['%s年'%et].idxmax(),fz1.loc[fz1['%s年'%et].idxmax(),'%s年'%et],st,fz1.loc[fz1['%s年'%st].idxmax(),'%s年'%st]??

????))??

run41.font.name?="仿宋_GB2312"??

run41._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??

run41.font.size?=?Pt(10)??


tu3?=?d1.add_picture(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\負債結構變化趨勢圖.png',width=Inches(6),height=Inches(4))??

tu3.alignment?=?WD_ALIGN_PARAGRAPH.CENTER??



p5?=d1.add_paragraph()??

r5?=?p5.add_run('?? 3、所有者權益結構分析\n ???下表數據為%s%s年至%s年所有者權益結構分析主要數據。'%(c_name,st,et))??

r5.font.size?=?Pt(10)??

#?r5.font.bold?=?True??

r5.font.name?='仿宋_GB2312'??

r5._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??


#插入權益結構表??

data_table(x=y_list,y=qy)??


p51?=?d1.add_paragraph()??

run51?=?p51.add_run('????'??

'從上表數據中可以看出,在%s年至%s年度中%s;%s;其中變化最大的項目為%s;變化最小的項目為%s。'??

'在%s年度的股本結構中占比最大的項目%s,占比比例為%.2f,此項目%s年度的占比為%.2f;'??

'占比最小的項目為%s其中占比為%.2f,此項目%s年度的占比為%.2f。'??

'以上是對股本結構的整體介紹,其他具體項目的變化趨勢見下圖:'?%(??

????st,et,??

change(x=qy,?y='實收資本(或股本)'),?change(x=qy,?y='未分配利潤'),?change(x=qy2,?y=qy_bh.idxmax()),change(x=qy2,?y=qy_bh.idxmin()),??

et,qy1['%s年'%et].idxmax(),qy1.loc[qy1['%s年'%et].idxmax(),'%s年'%et],st,qy1.loc[qy1['%s年'%st].idxmax(),'%s年'%st],??

qy1['%s年'%et].idxmax(),qy1.loc[qy1['%s年'%et].idxmax(),'%s年'%et],st,qy1.loc[qy1['%s年'%st].idxmax(),'%s年'%st]??

????))??

run51.font.name?="仿宋_GB2312"??

run51._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??

run51.font.size?=?Pt(10)??


tu4?=?d1.add_picture(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\股本結構變化趨勢圖.png',width=Inches(6),height=Inches(4))??

tu4.alignment?=?WD_ALIGN_PARAGRAPH.CENTER??


#??

p6?=d1.add_paragraph()??

r6?=?p6.add_run('???三、利潤表分析\n ???下表數據為%s%s年至%s年利潤表主要數據。'%(c_name,st,et))??

r6.font.size?=?Pt(10)??

#?r6.font.bold?=?True??

r6.font.name?='仿宋_GB2312'??

r6._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??


#插入利潤表??

data_table(x=y_list,y=lr)??


p61?=?d1.add_paragraph()??

run61?=?p61.add_run('????從上表數據中可以看出,%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s。\n ?下圖為各項數據的變化趨勢圖:'%??

(change(x=lr,y='營業總收入'),change(x=lr,y='營業收入'),change(x=lr,y='其他業務收入'),change(x=lr,y='營業總成本'),??

change(x=lr,y='營業成本'),change(x=lr,y='其他業務成本'),change(x=lr,y='銷售費用'),change(x=lr,y='管理費用'),??

change(x=lr,y='財務費用'),change(x=lr,y='其他業務利潤'),change(x=lr,y='營業利潤'),change(x=lr,y='利潤總額'),??

change(x=lr,y='所得稅費用'),change(x=lr,y='凈利潤'),))??


run61.font.name?="仿宋_GB2312"??

run61._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??

run61.font.size?=?Pt(10)??


tu5?=?d1.add_picture(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\利潤表主要數據變化趨勢圖.png',width=Inches(6),height=Inches(4))??

tu5.alignment?=?WD_ALIGN_PARAGRAPH.CENTER??

#??


p7?=d1.add_paragraph()??

r7?=?p7.add_run('???四、現金流量表分析\n ???下表數據為%s%s年至%s年現金流量表主要數據。'%(c_name,st,et))??

r7.font.size?=?Pt(10)??

#?7.font.bold?=?True??

r7.font.name?='仿宋_GB2312'??

r7._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??


#插入現金流量表??

data_table(x=y_list,y=xj)??


p71?=?d1.add_paragraph()??

run71?=?p71.add_run('????從上表數據中可以看出,%s;%s;%s;%s;%s;%s;%s;%s;%s;%s。\n ?下圖為各項數據的變化趨勢圖:'?%?(??

change(x=xj,y='經營活動現金流入小計'),change(x=xj,y='經營活動現金流出小計'),change(x=xj,y='經營活動產生的現金流量凈額'),??

change(x=xj,y='投資活動現金流入小計'),change(x=xj,y='投資活動現金流出小計'),change(x=xj,y='投資活動產生的現金流量凈額'),??

change(x=xj,y='籌資活動現金流入小計'),change(x=xj,y='籌資活動現金流出小計'),change(x=xj,y='籌資活動產生的現金流量凈額'),??

change(x=xj,y='現金及現金等價物凈增加額')))??


run71.font.name?="仿宋_GB2312"??

run71._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??

run71.font.size?=?Pt(10)??

#??

tu6?=?d1.add_picture(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\現金流量表主要數據變化趨勢圖.png',width=Inches(6),height=Inches(4))??

tu6.alignment?=?WD_ALIGN_PARAGRAPH.CENTER??

#??

#??

p8?=d1.add_paragraph()??

r8?=?p8.add_run('???五、綜合財務指標分析?\n ? 1、償債能力分析\n ???下表數據為%s%s年至%s年嘗債能力分析指標主要數據。'%(c_name,st,et))??

r8.font.size?=?Pt(10)??

#?r8.font.bold?=?True??

r8.font.name?='仿宋_GB2312'??

r8._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??


#插入償債能力表??

data_table(x=y_list,y=cz)??


p81?=?d1.add_paragraph()??

run81?=?p81.add_run('????上表數據反映出,%s;%s;%s;%s。其中變化最大的指標為%s。下圖為各項指標數據的變化趨勢圖:'%(??

up(x=cz,y='流動比率'),up(x=cz,y='速動比率'),down(x=cz,y='資產負債率'),down(x=cz,y='產權比率'),change(x=cz,?y=cz_bh.idxmax())??

)?)??

run81.font.name?="仿宋_GB2312"??

run81._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??

run81.font.size?=?Pt(10)??


tu7?=?d1.add_picture(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\償債能力主要指標變化趨勢圖.png',width=Inches(6),height=Inches(4))??

tu7.alignment?=?WD_ALIGN_PARAGRAPH.CENTER??


p9?=d1.add_paragraph()??

r9?=?p9.add_run('?? 2、盈利能力分析\n ???下表數據為%s%s年至%s年盈利能力分析指標主要數據。'%(c_name,st,et))??

r9.font.size?=?Pt(10)??

#?r9.font.bold?=?True??

r9.font.name?='仿宋_GB2312'??

r9._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??


#插入盈利能力表??

data_table(x=y_list,y=yl)??


p91?=?d1.add_paragraph()??

run91?=?p91.add_run('?????上表數據反映出,%s;%s;%s;%s;%s;%s。其中變化最大的指標為%s。下圖為各項指標數據的變化趨勢圖:'%(??

up(x=yl,y='總資產利潤率'),up(x=yl,y='總資產凈利潤率'),up(x=yl,y='營業利潤率'),up(x=yl,y='凈資產收益率'),up(x=yl,y='股本報酬率'),??

up(x=yl,y='銷售毛利率'),change(x=yl,?y=yl_bh.idxmax())??

)?)??

run91.font.name?="仿宋_GB2312"??

run91._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??

run91.font.size?=?Pt(10)??


tu8?=?d1.add_picture(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\盈利能力主要指標變化趨勢圖.png',width=Inches(6),height=Inches(4))??

tu8.alignment?=?WD_ALIGN_PARAGRAPH.CENTER??


p10?=d1.add_paragraph()??

r10?=?p10.add_run('?? 3、運營能力分析\n ???下表數據為%s%s年至%s年運營能力分析指標主要數據。'%(c_name,st,et))??

r10.font.size?=?Pt(10)??

#?r10.font.bold?=?True??

r10.font.name?='仿宋_GB2312'??

r10._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??


#插入運營能力表??

data_table(x=y_list,y=yy)??


p101?=?d1.add_paragraph()??

run101?=?p101.add_run('????上表數據反映出,%s;%s;%s;%s;%s;%s;%s;%s。下圖為各項指標數據的變化趨勢圖:'?%(??

up(x=yy,y='應收賬款周轉率'),down(x=yy,y='應收賬款周轉天數'),up(x=yy,y='存貨周轉率'),down(x=yy,y='存貨周轉天數'),??

up(x=yy,y='總資產周轉率'),down(x=yy,y='總資產周轉天數'),up(x=yy,y='流動資產周轉率'),down(x=yy,y='流動資產周轉天數')))??

run101.font.name?="仿宋_GB2312"??

run101._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??

run101.font.size?=?Pt(10)??


tu9?=?d1.add_picture(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\運營能力主要指標變化趨勢圖.png',width=Inches(6),height=Inches(4))??

tu9.alignment?=?WD_ALIGN_PARAGRAPH.CENTER??


p11?=d1.add_paragraph()??

r11?=?p11.add_run('?? 4、成長能力分析\n ???下表數據為%s%s年至%s年成長能力分析指標主要數據。'%(c_name,st,et))??

r11.font.size?=?Pt(10)??

#?r11.font.bold?=?True??

r11.font.name?='仿宋_GB2312'??

r11._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??


#插入成長能力表??

data_table(x=y_list,y=czn)??


p111?=?d1.add_paragraph()??

run111?=?p111.add_run('????上表數據反映出,%s;%s;%s;%s。\n ???下圖為各項指標數據的變化趨勢圖:'?%(??

up(x=czn,y='主營業務收入增長率'),up(x=czn,y='凈利潤增長率'),up(x=czn,y='凈資產增長率'),up(x=czn,y='總資產增長率')))??

run111.font.name?="仿宋_GB2312"??

run111._element.rPr.rFonts.set(qn('w:eastAsia'),?u'仿宋_GB2312')??

run111.font.size?=?Pt(10)??


tu10?=?d1.add_picture(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\成長能力主要指標變化趨勢圖.png',width=Inches(6),height=Inches(4))??

tu10.alignment?=?WD_ALIGN_PARAGRAPH.CENTER??



d1.save(r'C:\Users\admin\Desktop\python_data\財務分析\成果展示\%s%s年度至%s年度財務分析.docx'?%?(c_name,st,et))??

以下是最終的生成的文檔以及數據報表等。

感興趣的話可以在微信公眾號中搜索“數據處理和工作效率:Big_Data-",查看其他文章。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,107評論 2 375

推薦閱讀更多精彩內容