?因為小編是一個比較懶的人,所以有時候就想能不能通過一些方式提高日常工作中那些定時定點需要做的工作,于是在閑暇時間抱著聯系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-",查看其他文章。