首页 > 编程知识 正文

世界大学大数据专业排名最新,数据科学与大数据技术学校排名

时间:2023-05-04 03:03:13 阅读:140125 作者:2720

使用Python获取“最好大学网”软科中国最好大学排行榜2019,可视化分析概要创建开发环境获取数据1 .获取网页内容2 .解析网页内容3 .存储数据可视化分析基本设置为评分排行榜前十名的大学各地区大学的职称

个人资料

软科中国最高大学排行榜2019

图1

网站的格式如上,我们主要采取排行榜、学校名称、省市、总分四种数据。 进行可视化分析。

开发环境用于Python 3.7PyCharm的Python库数据存储(csv ) beautiful soup (web内容分析)请求(web下载) pandas (数据读取和分析)映射

defgethtmltext(URL ) : try : resp=request.urlopen ) URL ) html_data=resp.read ).decode ) ' utf-8 ' return html _ data except : return ' ' pass其中request.urlopen(url )返回response对象,并且可以使用read ()方法检索网页的内容。

2 .分析web内容我们使用BeautifulSoup分析整个web内容。

通过查看web源代码

数据的所有内容都存储在这个“tbody”元素中。

可以看到,网页上每行的数据存储在一个“tr”元素中,每个“tr”元素下的前四个“TD”元素是必需的数据。

deffillunivlist(ulist,html ) :soup=beautifulsoup ) html,' html.Parser'(fortrinsoup.find ) tbody ) childred BS4.element.tag(:TDS=tr ) TD ) ulist.append ) [TDS[0].string,tds[1].string,tds[2].string

defulist_to_dict(ulist ) : tag_list=['index ',' name ',' area ',' score'] for i,uin enumerate ] ul isise DICT(zip ) tag_list,u ) ) ) pass pass可以通过执行上述函数将列表中的子列表替换为词典。

efwrite_to_file(items ) :with(open('university.CSV ',' a ',encoding='utf_8_sig ',newline=' ) fieldnames=fieldnames ) forIinitems3360w.writerow ) I )导入pass pass可视化分析首选项matplotlib包

import matplotlib.pyplot as plt进行以下几个设置,使我们绘制的图像更漂亮。

PLT.rcparams [ ' font.sans-serif ' ]=[ ' simhei ' ] PLT.rcparams [ ' font.family ' ]=' sans-serif ' #解析符号- '

将import pandas as pdcolumn=['index ',' name ',' area ',' score']#CSV文件df=PD.read_CSV(university.CSV )

您可以看到在pandas中导入的数据格式非常明确。

分数是直接的数值,所以我们可以使用

pandas内置的sort方法进行排序

df_score = df.sort_values('score', ascending=False) # asc False降序,True升序

这样我们就得到了排序过的数据。

name1 = df_score.name[:10] # x轴坐标score1 = df_score.score[:10] # y轴坐标

这样可以获得数据中的前10项。

plt.bar(range(10), score1, tick_label=name1) # 绘制条形图,用range保持顺序一致plt.ylim(min(df_score.score), max(df_score.score)+5)plt.title("软科中国最好大学排名2019TOP10", color=colors1)plt.ylabel("评分")# 标记数值for x, y in enumerate(list(score1)): plt.text(x, y + 0.01, '%s' % round(y, 1), ha='center') passpl.xticks(rotation=90) # 旋转270°plt.tight_layout() # 去除空白plt.show()


可以看出清华位居第一并且遥遥领先第二名,北京大学、浙江大学、上海交通大学紧随其后。

各地区大学比例

我们要展示各地区大学所占比例首先要进行数量上的统计

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_list。在创建一个集合df_area_set,通过创建集合的方式可以非常简便的对列表进行去重。然后根据集合中的每一个元素在列表中统计他们出现的次数,最终将他们存储在字典中。

areas_sorted = dict(sorted(areas.items(), key=lambda mys: (mys[1]), reverse=True))area = list(areas_sorted.keys())counts = list(areas_sorted.values())show_area = area[:15]show_area.append("其它省")show_counts = counts[:15]show_counts.append(sum(counts[15:]))

然后我们将统计好的数据进行进一步的处理,首先对字典进行排序,这里用到了lambda表达式,这样的写法就可以按照字典的值进行排序,如果填写mys[0]的话就会按照字典的键进行排序。
排序完成后我们整理一下要展示的数据就可以进行可视化操作了。

plt.pie(show_counts, labels=show_area, autopct='%1.1f%%', shadow=False, startangle=150, radius=1.0, labeldistance=1.1)plt.title("全国各地区大学比例", color=colors1)plt.tight_layout()plt.show()

plt.pie()画一个饼图,参数如下

x :(每一块)的比例,如果sum(x) > 1会使用sum(x)归一化;labels :(每一块)饼图外侧显示的说明文字;explode :(每一块)离开中心距离;startangle :起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起;shadow :在饼图下面画一个阴影。默认值:False,即不画阴影;labeldistance :label标记的绘制位置,相对于半径的比例,默认值为1.1, 如<1则绘制在饼图内侧;autopct :控制饼图内百分比设置,可以使用format字符串或者format function
'%1.1f’指小数点前后位数(没有用空格补齐);pctdistance :类似于labeldistance,指定autopct的位置刻度,默认值为0.6;radius :控制饼图半径,默认值为1;counterclock :指定指针方向;布尔值,可选参数,默认为:True,即逆时针。将值改为False即可改为顺时针。wedgeprops :字典类型,可选参数,默认值:None。参数字典传递给wedge对象用来画一个饼图。例如:wedgeprops={‘linewidth’:3}设置wedge线宽为3。textprops :设置标签(labels)和比例文字的格式;字典类型,可选参数,默认值为:None。传递给text对象的字典参数。center :浮点类型的列表,可选参数,默认值:(0,0)。图标中心位置。frame :布尔类型,可选参数,默认值:False。如果是true,绘制带有表的轴框架。rotatelabels :布尔类型,可选参数,默认为:False。如果为True,旋转每个label到指定的角度。

最终我们得到的图如下

可以看出北京、江苏的优秀大学数量较多。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。