数据科学与大数据技术专业大学排行,数据科学与大数据技术专业高校排名
用Python获取2019年全国最佳大学“最佳大学网”软文排行榜,可视化分析大纲创建开发环境获取数据1。获取网页内容2。分析网页内容。存储数据可视化分析,基本设置为各地区排名前十的大学的标题。
个人资料
2019年软中国顶尖大学排名
图1
网站的格式如上。我们主要用排名榜、学校名称、省市、总分四种数据。进行可视化分析。
开发环境Python库数据存储(csv)美汤(web内容分析)请求(web下载)pandas(数据读取和分析)Python 3.7PyCharm的映射
defgethtmltext(URL):try:resp=request . urlopen)URL)html _ data=resp . read)。decode)Utf-8 return html _ data except:return pass where request . urlopen(URL)返回一个response对象,可以使用read()方法检索网页内容。
2.分析网页内容。我们使用BeautifulSoup来分析整个网络内容。
通过查看web源代码
数据的所有内容都存储在这个“tbody”元素中。
可以看到,网页上每一行的数据都存储在一个“tr”元素中,每个“tr”元素下的前四个“TD”元素是必需的数据。
deffillyunivlist(ulist,html ) :soup=beautifulsoup ) html, html。parser (fortrinsoup . find)tbody)child red bs4 . element . tag(:TDS=tr)TD)ulist . append)[TDS[0]。字符串,tds[1]。字符串,tds[2]。线
def ulist _ to _ dict(ulist):tag _ list=[ index , name , area , score] for i,uin enumerate]ulissise dict(zip)tag _ list,u))) pass通过执行上述函数可以用字典替换列表中的子列表。
write _ to _ file(items):with(open( university . CSV , a ,encoding=utf_8_sig ,newline=)field names=field names)for iin items 3360 w。writerow) I)导入matplotlib包,pass pass的可视化分析首选。
导入matplotlib.pyplot为plt进行如下设置,使我们绘制的图像更加美观。
PLT . RC params[ font . sans-serif ]=[ sim hei ]PLT . RC params[ font . family ]= sans-serif #解析符号-
导入熊猫为pdcolumn=[index , name , area , score]#CSV文件df=PD.read_CSV(大学。CSV)
可以看到熊猫里导入的数据格式非常清晰。
分数是直接值,所以我们可以用
熊猫内置排序方法进行排序。
Df _ score=df.sort _ values (score ,ascending=false)# ASC false descending,True ascending以便我们得到排序后的数据。
1=df _ score.name [:10] # x轴坐标score1=df _ score.score [:10] # y轴坐标。这样就可以得到数据中的前10项。
PLT。Bar (range (10),score 1,tick _ label=name1) #绘制条形图,并保持顺序与range一致。PLT。YLIM (min (df _ score。分数),Max (df _ score。分数)5) PLT。title( 2019中国软科学最佳大学排名 Color=colors 1)PLT . ylabel( score )# enumerate中x,y的标记值(list (score1)): plt.text (x,y0.01, % s% round (y,1),ha= center) pass pl.x门票
可以看到,清华排名第一,遥遥领先于第二名,北京大学、浙江大学、上海交通大学紧随其后。
要显示不同地区的大学比例,首先要做量化统计。
Df_area_list=df.get (area )。to _ list()df _ area _ set=set(df _ area _ list)areas={ } for area in df _ area _ set:areas[area]=df _ area _ list . count(area)pass首先我们创建一个集合df _ area _ set,通过创建一个集合复制列表是非常容易的。然后根据集合中的每个元素统计它们在列表中出现的次数,最后存储到字典中。
areas _ sorted=dict(sorted(areas . items(),key=lambda mys: (mys[1]),Reverse=true))area=list(areas _ sorted . keys())counties=list(areas _ sorted . values())Show _ area=area[:15]Show _ area . append(其他省份)Show _ countries=countries[:15]Show _ countries . append(sum(countries[15:]))。然后,我们将进一步处理统计数据。首先,我们对字典进行排序。这里使用了lambda表达式,这样就可以根据字典的值进行排序。如果填写了mys[0],将根据字典的键进行排序。
排序后,我们就可以把要显示的数据整理出来,可视化。
PLT。PIE (show _ counties,labels=show _ area,auto PCT=% 1.1f%% ,shadow=false,起始角度=150,半径=1.0,标注距离=1.1) PLT。Title(中国各地区高校占比,Color=colors 1)PLT . tight _ layout()PLT . show()PLT . pie()用以下参数画一个饼图
x :(每个块)的比值,如果sum(x) 1将被sum(x)归一化;标签:显示在饼图外部的说明文字(针对每一块);爆炸:(每一块)离中心的距离;Startangle:初始绘制角度。默认绘图是从X轴的正方向逆时针绘制。如果设置为90,则从Y轴的正方向绘制。阴影:在饼图下面画一个阴影。默认值:False,即没有底纹;Labeldistance:标签标记的标签绘制位置,相对于半径的比值,默认值为1.1,如果为1,则绘制在饼图的内侧;百分比:控制饼图中的百分比设置。您可以使用格式字符串或格式函数。
“%1.1f”是指小数点前后的数字(不用空格填充);Pctdistance:类似于labeldistance,指定autopct的位置刻度,默认值为0.6;半径:控制饼图的半径,默认值为1;逆时针:指定指针方向;布尔值,可选参数,默认值为:True,即逆时针方向。将值更改为False以顺时针旋转。Wedgeprops:字典类型,可选参数,默认值:无。参数被传递给楔形对象以绘制饼图。例如:wedge props={linewidth: 3}将楔形的宽度设置为3。Textprops:设置标签和比例文本的格式;字典类型,可选参数,默认值:无。传递给文本对象的字典参数。Center:浮点类型列表,可选参数,默认值:(0,0)。图标的中心位置。Frame: Boolean类型,可选参数,默认值:False。如果为真,画一个带表格的轴框架。Rotatelabels: boolean,可选参数。默认值为:False。如果为真,则将每个标签旋转到指定的角度。我们得到的最终数字如下
可见北京和江苏有很多优秀的大学。