涉及代码如下
hym_list=list(pat.columns) ##行业名称,统计于专利
czm_list=list(pro.columns) ##产值名称
doc=Document()
cor_result=pd.DataFrame()
for i in hym_list[1:]:
hy=[i]
zls=pat[i]
cz=pro[i]
cor=pd.DataFrame(columns=['时间',i+"专利数",'产值'])#单个行业数据
cor['时间']=pat['时间']
cor[i+"专利数"]=zls
cor['产值']=cz
cor_list=round(cor.corr(),4)# 相关系数
cor_num=cor_list[i+"专利数"]['产值']
cor_li=[cor_num]
cor_r=pd.DataFrame(columns=['行业','对应产值相关系数'])
cor_r['行业']=hy
cor_r['对应产值相关系数']=cor_li
cor_result=cor_result.append(cor_r)
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
# 画出双坐标轴图像
cor_l2=cor.dropna(subset=['产值'])
kd=[]##设置y轴刻度
kds=[]
h=cor_l2['产值'].min()
s=cor_l2[i+"专利数"].min()
for m in range(len(cor_l2['产值'])):
kd.append(h)
kds.append(s)
h=h+((cor_l2['产值'].max()-cor_l2['产值'].min())/len(cor_l2['产值']))
s=s+((cor_l2[i+"专利数"].max()-cor_l2[i+"专利数"].min())/len(cor_l2[i+"专利数"]))
fig,ax1 = plt.subplots(figsize = (10,8))
ax2 = ax1.twinx()
l1, = ax1.plot(cor['时间'],cor[i+"专利数"],'r-')
l2, = ax2.plot(cor['时间'],cor['产值'],'b-')
# 设置x,y轴文字说明
ax1.set_xlabel('时间')
ax1.set_yticks(kds)
ax1.set_xticks(cor['时间'])
ax1.set_ylabel(i+"专利数")
bq=(cor_l2[i+"专利数"].max()-cor_l2[i+"专利数"].min())*0.02
for c,d in zip(cor['时间'],cor[i+"专利数"]):
ax1.text(c,d+bq,'%.0f' % d,fontdict={'fontsize':12})
ax2.set_ylabel("产值")
ax2.set_yticks(kd)
for f,g in zip(cor_l2['时间'],cor_l2['产值']):
ax2.text(f,g,'%.0f' % g,fontdict={'fontsize':12})
# 设置图例
plt.legend(handles=[l1,l2,],labels=[i+"专利数",'产值'],loc='best')
# 设置标题
ax1.set_title(i+"—专利&产值趋势图")
name=i+"—专利&产值趋势图"
plt.savefig("********"+name+".png")
plt.grid()
plt.show()
print(cor_list)
if cor_num<0:##判断相关系数的方向特征
fx="相关系数为负,说明该行业的专利数和产值呈现负相关的相关关系,如趋势图所示,存在一定的相异的趋势。"
elif cor_num>0:
fx="相关系数为正,说明该行业的专利数和产值呈现正相关的相关关系,如趋势图所示,两者存在一定程度的相似趋势。"
if abs(cor_num)<0.3:##相关程度度量
cd="而该相关系数的数值说明相关程度很低,该行业的专利数和行业产值几乎不存在相关性。"
elif abs(cor_num)>=0.3 and abs(cor_num)<0.6:
cd="而该相关系数的数值说明相关程度较低,该行业的专利数和行业产值存在相对较弱的相关性,同时也不排除有专利泡沫的可能性。"
elif abs(cor_num)>=0.6 and abs(cor_num)<0.8:
cd="而该相关系数的数值说明两者的相关系数较高,相关性较强。"
elif abs(cor_num)>=0.8:
cd="而该相关系数的数值说明两者的相关程度高,两者存在比较强的依存关系。"
doc.add_heading(text=i,level=1) ##设置文档
doc.add_heading(text=i+"趋势图",level=2)
pic =doc.add_picture("******"+name+".png" ,width=Pt(500))
doc.add_heading(text=i+"相关分析",level=2)
table=doc.add_table(4,4,style='Table Grid')##创表
cell=table.cell(0,0)
cell.text="相关系数矩阵"
for j in range(3):
table.cell(0,j+1).text = cor_list.columns[j]
table.cell(j+1,0).text = cor_list.index[j]
for a in range(cor_list.shape[0]):
for j in range(cor_list.shape[-1]):
table.cell(a+1,j+1).text = str(cor_list.values[a,j])
paragraph =doc.add_paragraph(text=i+'的专利和其对应的产值的相关系数为:'+str(cor_num)+"。"+fx+cd)
ph_format =paragraph.paragraph_format
ph_format.space_before =Pt(10) #设置段前间距
ph_format.space_after =Pt(12) #设置段后间距
ph_format.line_spacing=Pt(19) #设置行间距
附件列表