姓名:李淑贤
学号:4201492
import re
import pandas as pd
import openpyxl
xlsx = '中药行业.xlsx'
df = pd.read_excel(xlsx)
exf = openpyxl.load_workbook(xlsx)
sheet = exf.active
C2 = sheet['C2']
C = sheet['C']
links = [c.value for c in C]
links_1=links[1:-1]
links_2=''.join(links_1)
sample='=HYPERLINK("http://news.windin.com/ns/bulletin.php?code=3E3A94A9DFF0&id=125171528&type=1","吉药控股:2019年年度报告(更新后)")'
p=re.compile('"(.*?)","(.*?)"')
list_of_tuple=p.findall(links_2)
df2=pd.DataFrame({'Link':[t[0]for t in list_of_tuple],
'f_name':[t[1]for t in list_of_tuple]})
df2.to_csv('中药行业.csv')
import re
import requests
import time
import pandas as pd
df=pd.read_excel('中药行业1.xlsx')
p=re.compile('(?<=\d{4})(年报)|(年年报)')
f_names=[p.sub('年年度报告',f)for f in df.f_name]
df['f_name']=f_names; del p,f_names
def filter_links(words,df,include=True):
ls=[]
for word in words:
if include:
ls.append([word in f for f in df.f_name])
else:
ls.append([word not in f for f in df.f_name])
index=[]
for r in range(len(df)):
flag=not include
for c in range(len(words)):
if include:
flag=flag or ls[c][r]
else:
flag=flag and ls[c][r]
index.append(flag)
df2=df[index]
return(df2)
df_all=filter_links(['摘要','审计报告','财务'],df,include=False)
df_original=filter_links(['(','('],df_all,include=False)
df_db=filter_links(['新天药业','仁和药业','康弘药业','珍宝岛','寿仙谷','马应龙','康美药业','以岭药业','恒康药业','瑞康药业'],df_original,include=True)
links=df_db['Link'];f_names=df_db['f_name']
def get_PDF_url(url):
r=requests.get(url);r.encoding='utf-8';html=r.text
r.close()
p=re.compile('<a href=(.*?)\s.*?>(.*?)</a>',re.DOTALL)
a=p.search(html)
if a is None:
Warning('没有找到下载链接,请手动检查链接:%s' % url)
return()
else:
href=a.group(1);fname=a.group(2).strip()
href=r.url[:26]+href
return((href,fname))
url='http://news.windin.com/ns/bulletin.php?code=4D1E66D54704&id=91937034&type=1'
url2='http://news.windin.com/ns/bulletin.php?code=557822AEA8D3&id=123566902&type=1'
hrefs=[];fnames=[]
for link in links:
href,fname=get_PDF_url(link)
hrefs.append(href)
fnames.append(fname)
time.sleep(10)
df_final_links=pd.DataFrame({'href':hrefs,'f_name':fnames})
df_final_links.to_excel('final_Links_中药行业.xlsx')
import pdfplumber
import os
file_dir=r'D:/python/homeworks/实验报告'
file_list=[]
for files in os.walk(file_dir):
for file in files[2]:
if os.path.splitext(file)[1]=='.pdf' or os.path.splitext(file)[1]=='.PDF':
file_list.append(file_dir+'\\'+file)
for i in range(len(file_list)):
pdf=pdfplumber.open(file_list[i])
pages=pdf.pages
page=pages[-3]
tables=page.extract_tables()
table=tables[0]
print(table)
bg=pd.DataFrame(table[1:],columns=table[0])
print(bg)
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
data=pd.read_excel('file:///D:/python/homeworks/实验报告/汇总表.xlsx',Sheet_name='sheet1',header=0,index_col=0)
plt.rcParams['font.sans-serif']=['SimHei'] #确保显示中文
plt.rcParams['axes.unicode_minus'] = False #确保显示负数的参数设置
plt.figure(figsize=(8,6))#定义画面大小
plt.plot(data['date'],data['新天药业'],'r-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.xlabel(u'日期',fontsize=15)#横坐标标签和字体
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'新天药业16-20年营业总收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
plt.plot(data['date'],data['仁和药业'],'r-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.xlabel(u'日期',fontsize=15)#横坐标标签和字体
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'仁和药业16-20年营业总收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
plt.plot(data['date'],data['康弘药业'],'r-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.xlabel(u'日期',fontsize=15)#横坐标标签和字体
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'康弘药业16-20年营业总收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
plt.plot(data['date'],data['以岭药业'],'r-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.xlabel(u'日期',fontsize=15)#横坐标标签和字体
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'以岭药业16-20年营业总收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
plt.plot(data['date'],data['康美药业'],'r-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.xlabel(u'日期',fontsize=15)#横坐标标签和字体
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'康美药业16-20年营业总收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
plt.plot(data['date'],data['马应龙'],'r-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.xlabel(u'日期',fontsize=15)#横坐标标签和字体
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'马应龙16-20年营业总收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
plt.plot(data['date'],data['珍宝岛'],'r-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.xlabel(u'日期',fontsize=15)#横坐标标签和字体
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'珍宝岛16-20年营业总收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
plt.plot(data['date'],data['寿仙谷'],'r-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.xlabel(u'日期',fontsize=15)#横坐标标签和字体
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'寿仙谷16-20年营业总收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
x=np.array(['新天药业','仁和药业','康弘药业','以岭药业','康美药业','马应龙','珍宝岛','寿仙谷'])
y=np.array([63318,356707,254003,382015,2164232,210280,239123,31487])
plt.plot(x,y,'b-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'2016年各公司营业收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
x=np.array(['新天药业','仁和药业','康弘药业','以岭药业','康美药业','马应龙','珍宝岛','寿仙谷'])
y=np.array([68171, 384377, 278649, 408126 ,2647697 ,175059 ,313652 ,36996])
plt.plot(x,y,'b-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'2017年各公司营业收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
x=np.array(['新天药业','仁和药业','康弘药业','以岭药业','康美药业','马应龙','珍宝岛','寿仙谷'])
y=np.array([69425, 440342 ,291744, 481455 ,1706507 ,219750 ,278090, 51145])
plt.plot(x,y,'b-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'2018年各公司营业收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
x=np.array(['新天药业','仁和药业','康弘药业','以岭药业','康美药业','马应龙','珍宝岛','寿仙谷'])
y=np.array([77333, 458117, 325743, 582529, 1144554 ,27053, 329185 ,54675])
plt.plot(x,y,'b-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'2019年各公司营业收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格
plt.figure(figsize=(8,6))#定义画面大小
x=np.array(['仁和药业','康弘药业','以岭药业','康美药业','马应龙','珍宝岛','寿仙谷'])
y=np.array([410610 ,329543 ,878247, 541200, 279159 ,340374, 63605])
plt.plot(x,y,'b-',label=u'营业收入',lw=3.0)#设置曲线图的标签与宽度为3.0
plt.ylabel(u'万元',fontsize=15,rotation=90)#设置Y轴的标签与字体大小和旋转角度
plt.title(u'2020年各公司营业收入曲线图',fontsize=20)
plt.legend(loc='best')#显示图例,位置最佳
plt.grid()#网格