截至2020年6月30日,全国高等学校共计3005所,其中:普通高等学校2740所,含本科院校1272所、高职(专科)院校1468所;成人高等学校265所。本名单未包含港澳台地区高等学校。
06
目录:
0.全国高校分布—数据可视化
0.1.环境引入
0.2.各省高校数
0.3.各市高校数
0.4.本科&专科高校数
0.5.民办&公办高校数
0.6.各级主管单位所属高校数
0.7.一流大学建设高校
0.8.一流学科建设高校
1.获取最新高校名单—数据爬虫
1.1.教育部全国高等学校名单
1.2.教育部阳光高考院校库
1.3.数据源高校数据对比
1.4.“双一流”高校名单
2.全国高校分布—数据处理
2.1.数据预处理
2.2.各省高校数
2.3.各市高校数
2.4.本科&专科高校数
2.5.民办&公办高校数
2.6.各级主管单位所属高校数
2.7.一流大学建设高校
2.8.一流学科建设高校
公众号回复“高校”可领取全部代码文件
0.全国高校分布—数据可视化
这里我们使用pyecharts
数据可视化库进行数据展示
0.1.环境引入
pyecharts分为0.5x 和 1.x 版本,本次使用的是 1.7.1版本
#先导入Jupyter lab渲染插件
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
#如果使用Jupyter notebook 则改为如下代码
#CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_NOTEBOOK
from pyecharts.charts import *
from pyecharts.components import Table
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import pyecharts
print(pyecharts.__version__)
1.7.1
0.2.各省高校数
# map地图(省份)
c = (
Map()
.add("各省高校分布", [list(z) for z in zip(area['所在省'], area['合计'])], "china",label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(
title_opts=opts.TitleOpts(title="高校分布-省"),
visualmap_opts=opts.VisualMapOpts(max_=150),
)
)
c.width = '1500px'
c.height = '900px'
c.render_notebook()
0.3.各市高校数
# map地图(城市)
c = (
Map()
.add("各市高校分布", [list(z) for z in zip(city['所在地'], city['合计'])], "china-cities",label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title="高校分布-城市"),
visualmap_opts=opts.VisualMapOpts(max_=50),
)
)
c.width = '1500px'
c.height = '900px'
c.render_notebook()
c.render()
0.4.本科&专科高校数
from pyecharts.globals import ThemeType
bar = (
Bar({"theme": ThemeType.MACARONS})
.add_xaxis(list(level.所在省))
.add_yaxis('专科', list(level.专科))
.add_yaxis('本科', list(level.本科))
.set_global_opts(title_opts=opts.TitleOpts(title="本科&专科高校数",
title_textstyle_opts=opts.TextStyleOpts(font_style="italic")),
#强制显示全部x坐标标签
xaxis_opts=opts.AxisOpts(axislabel_opts={"interval":"0"})
)
)
bar.width = '1500px'
bar.render_notebook()
#计算办学层次中 本科及专科 分布
level_ = df.groupby('办学层次')['学校名称'].count().to_frame('数量').reset_index()
level_
办学层次 | 数量 | |
---|---|---|
0 | 专科 | 1468 |
1 | 本科 | 1272 |
# 本专科分布图
c = (
Pie()
.add("", [list(z) for z in zip(level_.办学层次, level_.数量)])
.set_global_opts(title_opts=opts.TitleOpts(title="本学层次分布"))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
c.width = '1500px'
c.render_notebook()
0.5.民办&公办高校数
bar = (
Bar({"theme": ThemeType.MACARONS})
.add_xaxis(list(area.所在省))
.add_yaxis('中外合作办学', list(area.中外合作办学))
.add_yaxis('内地与港澳台地区合作办学', list(area.内地与港澳台地区合作办学))
.add_yaxis('民办', list(area.民办))
.add_yaxis('公办', list(area.公办))
.set_global_opts(title_opts=opts.TitleOpts(title="民办&公办高校数",
title_textstyle_opts=opts.TextStyleOpts(font_style="italic")),
#强制显示全部x坐标标签
xaxis_opts=opts.AxisOpts(axislabel_opts={"interval":"0"})
)
)
bar.width = '1500px'
bar.render_notebook()
0.6.各级主管单位所属高校数
高校一般主管单位有各省、省教育厅、教委、教育部、工信部以及其他部门
0.6.1各省直属高校分布
从各省直属高校数我们可以看到 山东、河南、江苏和广东 主管的高校最多
这四个省 专科院校都在60所以上,本科院校也都接近或超过30所
#主管部门为省级单位
gov = pd.pivot_table(df,values='学校名称',index='主管部门',columns='办学层次',aggfunc='count',
margins=True,margins_name='合计').fillna(0).sort_values(by='合计',ascending=False).reset_index()
#删除行汇总
gov.drop(0,axis=0,inplace=True)
govP = gov[gov['主管部门'].str.endswith(('省','市','区'))]
bar = (
Bar({"theme": ThemeType.MACARONS})
.add_xaxis(list(govP.主管部门))
.add_yaxis('专科', list(govP.专科))
.add_yaxis('本科', list(govP.本科))
.set_global_opts(title_opts=opts.TitleOpts(title="省级主管部门高校数",
title_textstyle_opts=opts.TextStyleOpts(font_style="italic")),
#强制显示全部x坐标标签
xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate":30,"interval":0})
)
)
bar.width = '1500px'
bar.render_notebook()
0.6.2.教育单位直属高校分布
教育部
是直属高校最多的部门,且仅主管本科院校,共76所。
#主管部门为教育单位
gov = pd.pivot_table(df,values='学校名称',index='主管部门',columns='办学层次',aggfunc='count',
margins=True,margins_name='合计').fillna(0).sort_values(by='合计',ascending=False).reset_index()
#删除行汇总
gov.drop(0,axis=0,inplace=True)
govE = gov[gov['主管部门'].str.contains('教')]
bar = (
Bar({"theme": ThemeType.MACARONS})
.add_xaxis(list(govE.主管部门))
.add_yaxis('专科', list(govE.专科))
.add_yaxis('本科', list(govE.本科))
.set_global_opts(title_opts=opts.TitleOpts(title="教育类主管部门高校数",
title_textstyle_opts=opts.TextStyleOpts(font_style="italic")),
#强制显示全部x坐标标签
xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate":30,"interval":0})
)
)
bar.width = '1500px'
bar.render_notebook()
0.6.3.其他部门直属高校分布
像工信部(直属7所国防院校),国家民委、公安部等都主管有5所以上本科院校
#主管部门为其他单位
gov = pd.pivot_table(df,values='学校名称',index='主管部门',columns='办学层次',aggfunc='count',
margins=True,margins_name='合计').fillna(0).sort_values(by='合计',ascending=False).reset_index()
#删除行汇总
gov.drop(0,axis=0,inplace=True)
govE = gov[~((gov['主管部门'].str.contains('教'))|(gov['主管部门'].str.endswith(('省','市','区'))))]
bar = (
Bar({"theme": ThemeType.MACARONS})
.add_xaxis(list(govE.主管部门))
.add_yaxis('专科', list(govE.专科))
.add_yaxis('本科', list(govE.本科))
.set_global_opts(title_opts=opts.TitleOpts(title="其他主管部门高校数",
title_textstyle_opts=opts.TextStyleOpts(font_style="italic")),
#强制显示全部x坐标标签
xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate":30,"interval":0})
)
)
bar.width = '1500px'
bar.render_notebook()
# 国防七子
df[df.主管部门=='工业和信息化部'].drop('序号',axis=1).reset_index(drop=True)
学校名称 | 学校标识码 | 主管部门 | 所在省 | 所在地 | 办学层次 | 备注 | |
---|---|---|---|---|---|---|---|
0 | 北京航空航天大学 | 4111010006 | 工业和信息化部 | 北京 | 北京 | 本科 | 公办 |
1 | 北京理工大学 | 4111010007 | 工业和信息化部 | 北京 | 北京 | 本科 | 公办 |
2 | 哈尔滨工业大学 | 4123010213 | 工业和信息化部 | 黑龙江 | 哈尔滨 | 本科 | 公办 |
3 | 哈尔滨工程大学 | 4123010217 | 工业和信息化部 | 黑龙江 | 哈尔滨 | 本科 | 公办 |
4 | 南京航空航天大学 | 4132010287 | 工业和信息化部 | 江苏 | 南京 | 本科 | 公办 |
5 | 南京理工大学 | 4132010288 | 工业和信息化部 | 江苏 | 南京 | 本科 | 公办 |
6 | 西北工业大学 | 4161010699 | 工业和信息化部 | 陕西 | 西安 | 本科 | 公办 |
# 公安系统大学
df[df.主管部门=='公安部'].drop('序号',axis=1).reset_index(drop=True)
学校名称 | 学校标识码 | 主管部门 | 所在省 | 所在地 | 办学层次 | 备注 | |
---|---|---|---|---|---|---|---|
0 | 中国人民公安大学 | 4111010041 | 公安部 | 北京 | 北京 | 本科 | 公办 |
1 | 中国人民警察大学 | 4113011105 | 公安部 | 河北 | 廊坊 | 本科 | 公办 |
2 | 中国刑事警察学院 | 4121010175 | 公安部 | 辽宁 | 沈阳 | 本科 | 公办 |
3 | 南京森林警察学院 | 4132012213 | 公安部 | 江苏 | 南京 | 本科 | 公办 |
4 | 铁道警察学院 | 4141012735 | 公安部 | 河南 | 郑州 | 本科 | 公办 |
# 民族大学
df[df.主管部门=='国家民委'].drop('序号',axis=1).reset_index(drop=True)
学校名称 | 学校标识码 | 主管部门 | 所在省 | 所在地 | 办学层次 | 备注 | |
---|---|---|---|---|---|---|---|
0 | 中央民族大学 | 4111010052 | 国家民委 | 北京 | 北京 | 本科 | 公办 |
1 | 大连民族大学 | 4121012026 | 国家民委 | 辽宁 | 大连 | 本科 | 公办 |
2 | 中南民族大学 | 4142010524 | 国家民委 | 湖北 | 武汉 | 本科 | 公办 |
3 | 西南民族大学 | 4151010656 | 国家民委 | 四川 | 成都 | 本科 | 公办 |
4 | 西北民族大学 | 4162010742 | 国家民委 | 甘肃 | 兰州 | 本科 | 公办 |
5 | 北方民族大学 | 4164011407 | 国家民委 | 宁夏 | 银川 | 本科 | 公办 |
0.7.一流大学建设高校
该部分从college_42获取,一共42所,其中北京8所,上海4所,陕西与湖南各3所
# map地图(省份)
c = (
Map()
.add("各省高校分布", [list(z) for z in zip(area_42['院校所在地'], area_42['数量'])], "china",label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(
title_opts=opts.TitleOpts(title="一流大学建设高校分布-省"),
visualmap_opts=opts.VisualMapOpts(max_=5),
)
)
c.width = '1500px'
c.height = '900px'
c.render_notebook()
# 北京 一流大学建设高校
college_42[college_42['院校所在地']=='北京']
院校名称 | 院校所在地 | 教育行政主管部门 | 院校类型 | 学历层次 | 一流大学建设高校 | 一流学科建设高校 | 研究生院 | 满意度 | |
---|---|---|---|---|---|---|---|---|---|
0 | 北京大学 | 北京 | 教育部 | 综合 | 本科 | 1.0 | NaN | 1.0 | 4.7 |
1 | 中国人民大学 | 北京 | 教育部 | 综合 | 本科 | 1.0 | NaN | 1.0 | 4.7 |
2 | 清华大学 | 北京 | 教育部 | 综合 | 本科 | 1.0 | NaN | 1.0 | 4.8 |
3 | 北京航空航天大学 | 北京 | 工业和信息化部 | 工科 | 本科 | 1.0 | NaN | 1.0 | 4.5 |
4 | 北京理工大学 | 北京 | 工业和信息化部 | 工科 | 本科 | 1.0 | NaN | 1.0 | 4.5 |
5 | 中国农业大学 | 北京 | 教育部 | 农业 | 本科 | 1.0 | NaN | 1.0 | 4.7 |
6 | 北京师范大学 | 北京 | 教育部 | 师范 | 本科 | 1.0 | NaN | 1.0 | 4.5 |
7 | 中央民族大学 | 北京 | 国家民族事务委员会 | 民族 | 本科 | 1.0 | NaN | NaN | 4.3 |
# 上海 一流大学建设高校
college_42[college_42['院校所在地']=='上海'].reset_index(drop=True)
院校名称 | 院校所在地 | 教育行政主管部门 | 院校类型 | 学历层次 | 一流大学建设高校 | 一流学科建设高校 | 研究生院 | 满意度 | |
---|---|---|---|---|---|---|---|---|---|
0 | 复旦大学 | 上海 | 教育部 | 综合 | 本科/高职(专科) | 1.0 | NaN | 1.0 | 4.7 |
1 | 同济大学 | 上海 | 教育部 | 工科 | 本科/高职(专科) | 1.0 | NaN | 1.0 | 4.6 |
2 | 上海交通大学 | 上海 | 教育部 | 综合 | 本科 | 1.0 | NaN | 1.0 | 4.7 |
3 | 华东师范大学 | 上海 | 教育部 | 师范 | 本科/高职(专科) | 1.0 | NaN | 1.0 | 4.6 |
0.8.一流学科建设高校
该部分从college_95获取,一共95所,其中北京26所,江苏12所,上海10所
# map地图(省份)
c = (
Map()
.add("各省高校分布", [list(z) for z in zip(area_95['院校所在地'], area_95['数量'])], "china",label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(
title_opts=opts.TitleOpts(title="一流学科建设高校分布-省"),
visualmap_opts=opts.VisualMapOpts(max_=10),
)
)
c.width = '1500px'
c.height = '900px'
c.render_notebook()
# 北京 一流学科建设高校
college_95[college_95['院校所在地']=='北京']
院校名称 | 院校所在地 | 教育行政主管部门 | 院校类型 | 学历层次 | 一流大学建设高校 | 一流学科建设高校 | 研究生院 | 满意度 | |
---|---|---|---|---|---|---|---|---|---|
0 | 北京交通大学 | 北京 | 教育部 | 工科 | 本科/高职(专科) | NaN | 1.0 | 1.0 | 4.4 |
1 | 北京工业大学 | 北京 | 北京市教育委员会 | 工科 | 本科/高职(专科) | NaN | 1.0 | NaN | 4.4 |
2 | 北京科技大学 | 北京 | 教育部 | 工科 | 本科/高职(专科) | NaN | 1.0 | 1.0 | 4.5 |
3 | 北京化工大学 | 北京 | 教育部 | 工科 | 本科/高职(专科) | NaN | 1.0 | NaN | 4.1 |
4 | 北京邮电大学 | 北京 | 教育部 | 工科 | 本科 | NaN | 1.0 | 1.0 | 4.3 |
5 | 北京林业大学 | 北京 | 教育部 | 林业 | 本科 | NaN | 1.0 | 1.0 | 4.4 |
6 | 北京协和医学院 | 北京 | 国家卫生健康委员会 | 医药 | 本科/高职(专科) | NaN | 1.0 | 1.0 | 4.2 |
7 | 北京中医药大学 | 北京 | 教育部 | 医药 | 本科/高职(专科) | NaN | 1.0 | NaN | 3.8 |
8 | 首都师范大学 | 北京 | 北京市教育委员会 | 师范 | 本科 | NaN | 1.0 | NaN | 4 |
9 | 北京外国语大学 | 北京 | 教育部 | 语言 | 本科 | NaN | 1.0 | NaN | 4.3 |
10 | 中国传媒大学 | 北京 | 教育部 | 语言 | 本科/高职(专科) | NaN | 1.0 | NaN | 4.5 |
11 | 中央财经大学 | 北京 | 教育部 | 财经 | 本科 | NaN | 1.0 | NaN | 4.2 |
12 | 对外经济贸易大学 | 北京 | 教育部 | 财经 | 本科 | NaN | 1.0 | NaN | 4.7 |
13 | 外交学院 | 北京 | 外交部 | 语言 | 本科 | NaN | 1.0 | NaN | 4.1 |
14 | 中国人民公安大学 | 北京 | 公安部 | 政法 | 本科 | NaN | 1.0 | NaN | 4.4 |
15 | 北京体育大学 | 北京 | 国家体育总局 | 体育 | 本科 | NaN | 1.0 | NaN | 4.1 |
16 | 中央音乐学院 | 北京 | 教育部 | 艺术 | 本科 | NaN | 1.0 | NaN | 4.5 |
17 | 中国音乐学院 | 北京 | 北京市教育委员会 | 艺术 | 本科 | NaN | 1.0 | NaN | 4.3 |
18 | 中央美术学院 | 北京 | 教育部 | 艺术 | 本科/高职(专科) | NaN | 1.0 | NaN | 4.6 |
19 | 中央戏剧学院 | 北京 | 教育部 | 艺术 | 本科/高职(专科) | NaN | 1.0 | NaN | 4.8 |
20 | 中国政法大学 | 北京 | 教育部 | 政法 | 本科 | NaN | 1.0 | NaN | 4.5 |
21 | 华北电力大学 | 北京 | 教育部 | 工科 | 本科 | NaN | 1.0 | NaN | 4.3 |
22 | 中国矿业大学 | 北京 | 教育部 | 工科 | 本科 | NaN | 1.0 | 1.0 | 4.3 |
23 | 中国石油大学 | 北京 | 教育部 | 工科 | 本科 | NaN | 1.0 | 1.0 | 4.1 |
24 | 中国地质大学 | 北京 | 教育部 | 工科 | 本科 | NaN | 1.0 | 1.0 | 4.2 |
25 | 中国科学院大学 | 北京 | 中国科学院 | 综合 | 本科 | NaN | 1.0 | NaN | 4.5 |
# 上海 一流学科建设高校
college_95[college_95['院校所在地']=='上海'].reset_index(drop=True)
院校名称 | 院校所在地 | 教育行政主管部门 | 院校类型 | 学历层次 | 一流大学建设高校 | 一流学科建设高校 | 研究生院 | 满意度 | |
---|---|---|---|---|---|---|---|---|---|
0 | 华东理工大学 | 上海 | 教育部 | 工科 | 本科 | NaN | 1.0 | 1.0 | 4.2 |
1 | 东华大学 | 上海 | 教育部 | 工科 | 本科 | NaN | 1.0 | NaN | 4.5 |
2 | 上海海洋大学 | 上海 | 上海市教育委员会 | 农业 | 本科/高职(专科) | NaN | 1.0 | NaN | 4.2 |
3 | 上海中医药大学 | 上海 | 上海市教育委员会 | 医药 | 本科/高职(专科) | NaN | 1.0 | NaN | 3.5 |
4 | 上海外国语大学 | 上海 | 教育部 | 语言 | 本科/高职(专科) | NaN | 1.0 | NaN | 4.3 |
5 | 上海财经大学 | 上海 | 教育部 | 财经 | 本科 | NaN | 1.0 | NaN | 4.6 |
6 | 上海体育学院 | 上海 | 上海市教育委员会 | 体育 | 本科 | NaN | 1.0 | NaN | 4.5 |
7 | 上海音乐学院 | 上海 | 上海市教育委员会 | 艺术 | 本科 | NaN | 1.0 | NaN | 4.7 |
8 | 上海大学 | 上海 | 上海市教育委员会 | 综合 | 本科/高职(专科) | NaN | 1.0 | NaN | 4.4 |
9 | 海军军医大学 | 上海 | 中央军委训练管理部 | 综合 | 本科 | NaN | 1.0 | NaN | 1.0 |
1.获取最新高校名单—数据爬虫
数据来源:
教育部全国高等学校名单
(http://www.moe.gov.cn/mdcx/qggdxxmd/201912/t20191217_10000023.html)
教育部阳光高考院校库
(https://gaokao.chsi.com.cn/sch/search--ss-on,option-qg,searchType-1,start-0.dhtml)
1.1.教育部全国高等学校名单
截至2020年6月30日,全国高等学校共计3005所,其中:普通高等学校2740所,含本科院校1272所、高职(专科)院校1468所;成人高等学校265所。本名单未包含港澳台地区高等学校。 ”
教育部高等学校名单有网页版和电子表格文档版,不会爬虫的小伙伴可以直接下载文档版即可。通过分析网页版数据,这里决定简单使用requests
请求数据,然后用bs4
进行数据解析,需要注意的是在请求数据的时候需要带请求头,否则会出现403的报错。由于处理过程比较简单,不再赘述,全部代码如下:
#引入需要用到的库
import pandas as pd
import requests
from bs4 import BeautifulSoup
# 从教育部官网获取最新的高校名单
# 简单使用requests + bs4 爬取
lis = []
num = 0
for page in range(1,138):
url = f'http://www.moe.gov.cn/school/wcmdata/getDataIndex.jsp?listid=10000023&page={page}&keyword='
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'}
re = requests.get(url,headers=headers)
soup = BeautifulSoup(re.text,'lxml')
trs = soup.find_all('tr')
for tr in trs:
num+=1
li = {}
tds = tr.find_all('td')
li['序号'] = tds[0].text
li['学校名称'] = tds[1].text
li['学校标识码'] = tds[2].text
li['主管部门'] = tds[3].text
li['所在省'] = tds[4].text
li['所在地'] = tds[5].text
li['办学层次'] = tds[6].text
li['备注'] = tds[7].text
lis.append(li)
print(f'\r已采集{num}个学校信息',end=' ')
df = pd.DataFrame(lis)
#数据预览
df.head()
序号 | 学校名称 | 学校标识码 | 主管部门 | 所在省 | 所在地 | 办学层次 | 备注 | |
---|---|---|---|---|---|---|---|---|
0 | 1 | 北京大学 | 4111010001 | 教育部 | 北京市 | 北京市 | 本科 | |
1 | 2 | 中国人民大学 | 4111010002 | 教育部 | 北京市 | 北京市 | 本科 | |
2 | 3 | 清华大学 | 4111010003 | 教育部 | 北京市 | 北京市 | 本科 | |
3 | 4 | 北京交通大学 | 4111010004 | 教育部 | 北京市 | 北京市 | 本科 | |
4 | 5 | 北京工业大学 | 4111010005 | 北京市 | 北京市 | 北京市 | 本科 |
1.2.教育部阳光高考院校库
区别于教育部全国高等学校名单
,阳光高考院校库还包含有院校特性、院校类型等属性。其中院校类型我们主要关注一流大学建设学校和一流学科建设学校,也就是从2017年开始推进的双一流
;院校类型就是通常所说的工科院校、师范院校等类型。
世界一流大学和一流学科,简称“双一流”。建设世界一流大学和一流学科,是中共中央、国务院作出的重大战略决策,也是中国高等教育领域继“211工程”“985工程”之后的又一国家战略,有利于提升中国高等教育综合实力和国际竞争力,为实现“两个一百年”奋斗目标和实现中华民族伟大复兴的中国梦提供有力支柱。
首批“双一流”建设高校共计137所,其中世界一流大学建设高校42所(A类36所,B类6所),世界一流学科建设高校95所。
”
# 从阳光高考网站获取各高校
# 在分析网页的时候,发现是标准的table表单形式,刚好可以使用pandas的read_html进行简单的爬取
data = pd.DataFrame()
for i in range(141):
data_ = pd.read_html(f'https://gaokao.chsi.com.cn/sch/search.do?searchType=1&start={i*20}')[0]
data = data.append(data_)
print(f'\r已采集{(i+1)*20}个学校信息',end=' ')
# 由于双一流标识是√,这里替换为数字1方便后续计算
data.replace('',1,inplace=True)
# 重置索引,并删除旧的索引
data = data.reset_index(drop=True)
#数据预览
data.head()
院校名称 | 院校所在地 | 教育行政主管部门 | 院校类型 | 学历层次 | 一流大学建设高校 | 一流学科建设高校 | 研究生院 | 满意度 | |
---|---|---|---|---|---|---|---|---|---|
0 | 北京大学 | 北京 | 教育部 | 综合 | 本科 | 1.0 | NaN | 1.0 | 4.7 |
1 | 中国人民大学 | 北京 | 教育部 | 综合 | 本科 | 1.0 | NaN | 1.0 | 4.7 |
2 | 清华大学 | 北京 | 教育部 | 综合 | 本科 | 1.0 | NaN | 1.0 | 4.8 |
3 | 北京交通大学 | 北京 | 教育部 | 工科 | 本科/高职(专科) | NaN | 1.0 | 1.0 | 4.4 |
4 | 北京工业大学 | 北京 | 北京市教育委员会 | 工科 | 本科/高职(专科) | NaN | 1.0 | NaN | 4.4 |
1.3.数据源高校数据对比
我们对比从两份数据源获取的数据,发现存在一些差异:一份是2740名单,另外一份是2820名单。具体差在哪里呢?我们简单看下:
# 由于在两份数据中,一个使用的是英文括号,一个使用的是中文括号,为了方便数据比对,我们统一改为中文括号。
# 将阳光高考院校库院校名称中英文括号改为中文括号
data.院校名称 = data.院校名称.str.replace('(','(').str.replace(')',')')
教育部全国高等学校名单中不在阳光高考院校库的学校信息
#筛选出名单列表
dfNotdata = list(set(df.学校名称)-set(data.院校名称))
#isin选取数据
dfDiff = df[df['学校名称'].isin(dfNotdata)]
dfDiff.head()
序号 | 学校名称 | 学校标识码 | 主管部门 | 所在省 | 所在地 | 办学层次 | 备注 | |
---|---|---|---|---|---|---|---|---|
48 | 49 | 华北电力大学 | 4111010054 | 教育部 | 北京市 | 北京市 | 本科 | |
56 | 57 | 中国青年政治学院 | 4111011625 | 共青团中央 | 北京市 | 北京市 | 本科 | |
122 | 123 | 天津市职业大学 | 4112011032 | 天津市 | 天津市 | 天津市 | 专科 | |
303 | 304 | 运城职业技术大学 | 4114014226 | 山西省教育厅 | 山西省 | 运城市 | 本科 | 民办 |
307 | 308 | 山西省财政税务专科学校 | 4114011630 | 山西省 | 山西省 | 太原市 | 专科 |
dfDiff.shape
(24, 8)
我们看到在24所学校中,其实是因为存在部分学校校区分布导致数据对不上,比如华北电力大学,在阳光高考中是分为北京和保定校区的。
# 阳光高考院校库中 华北电力大学情况
data[data.院校名称.str.contains('华北电力大学')]
院校名称 | 院校所在地 | 教育行政主管部门 | 院校类型 | 学历层次 | 一流大学建设高校 | 一流学科建设高校 | 研究生院 | 满意度 | |
---|---|---|---|---|---|---|---|---|---|
48 | 华北电力大学(北京) | 北京 | 教育部 | 工科 | 本科 | NaN | 1.0 | NaN | 4.3 |
161 | 华北电力大学(保定) | 河北 | 教育部 | 工科 | 本科 | NaN | 1.0 | NaN | 4.5 |
241 | 华北电力大学科技学院 | 河北 | 河北省教育厅 | 工科 | 本科 | NaN | NaN | NaN | 3.5 |
教育部阳光高考院校库中不在全国高等学校名单的学校信息
#筛选出名单列表
dataNotdf = list(set(data.院校名称)-set(df.学校名称))
#isin选取数据
dataDiff = data[data['院校名称'].isin(dataNotdf)]
dataDiff.head()
院校名称 | 院校所在地 | 教育行政主管部门 | 院校类型 | 学历层次 | 一流大学建设高校 | 一流学科建设高校 | 研究生院 | 满意度 | |
---|---|---|---|---|---|---|---|---|---|
48 | 华北电力大学(北京) | 北京 | 教育部 | 工科 | 本科 | NaN | 1.0 | NaN | 4.3 |
91 | 北京大学医学部 | 北京 | 教育部 | 综合 | 本科/高职(专科) | 1.0 | NaN | 1.0 | 4.1 |
92 | 北京科技大学延庆分校 | 北京 | 北京市教育委员会 | 工科 | 高职(专科) | NaN | NaN | NaN | 3.2 |
93 | 北京邮电大学(宏福校区) | 北京 | 教育部 | 工科 | 本科 | NaN | 1.0 | 1.0 | -- |
94 | 陆军装甲兵学院 | 北京 | 中央军委训练管理部 | 综合 | 本科 | NaN | NaN | NaN | -- |
dataDiff.shape
(102, 9)
实际上,华北电力大学(北京),北京邮电大学(宏福校区)等在教育部全国高等学校名单中是存为华北电力大学和北京邮电大学
# 教育部全国高等学校名单中华北电力大学和北京邮件大学相关关键字学校信息
df[df.学校名称.str.contains('华北电力大学|北京邮电大学')]
序号 | 学校名称 | 学校标识码 | 主管部门 | 所在省 | 所在地 | 办学层次 | 备注 | |
---|---|---|---|---|---|---|---|---|
12 | 13 | 北京邮电大学 | 4111010013 | 教育部 | 北京市 | 北京市 | 本科 | |
48 | 49 | 华北电力大学 | 4111010054 | 教育部 | 北京市 | 北京市 | 本科 | |
61 | 62 | 北京邮电大学世纪学院 | 4111013901 | 北京市教委 | 北京市 | 北京市 | 本科 | 民办 |
193 | 194 | 华北电力大学科技学院 | 4113013417 | 河北省教育厅 | 河北省 | 保定市 | 本科 | 民办 |
1.4.“双一流”高校名单
"双一流" 大学标识字段在 阳光高考
数据源中有,因此我们从这部分数据中进行处理。从数据观察中,我们发现对分校、医学院等都有标注,因此可以通过对针对性处理获取最终的名单。
一流大学建设高校 一共42所:
# “双一流”标识字段在阳光高考院校库才有,我们用这部分数据进行筛选
a = data.copy(deep=True)
# 由于部分 院校有 分校,我们需要过滤
a.院校名称 = data.院校名称.str.split('(',1,True)[0]
a.drop_duplicates(subset='院校名称',inplace=True)
#42所一流大学建设学校(分校、医学院等过滤)
college_42 = a[(a['一流大学建设高校']==1)&(a.满意度!='--')&(a['院校名称'].str.endswith('学'))].reset_index(drop=True)
print(list(college_42.院校名称))
['北京大学', '中国人民大学', '清华大学', '北京航空航天大学', '北京理工大学', '中国农业大学', '北京师范大学', '中央民族大学', '南开大学', '天津大学', '大连理工大学', '东北大学', '吉林大学', '哈尔滨工业大学', '复旦大学', '同济大学', '上海交通大学', '华东师范大学', '南京大学', '东南大学', '浙江大学', '中国科学技术大学', '厦门大学', '山东大学', '中国海洋大学', '郑州大学', '武汉大学', '华中科技大学', '湖南大学', '中南大学', '国防科技大学', '中山大学', '华南理工大学', '重庆大学', '四川大学', '电子科技大学', '云南大学', '西安交通大学', '西北工业大学', '西北农林科技大学', '兰州大学', '新疆大学']
一流学科建设高校 一共95所:
#95所一流大学建设学校
college_95 = a[(a['一流学科建设高校']==1)&(a.满意度!='--')].reset_index(drop=True)
print(list(college_95.院校名称))
['北京交通大学', '北京工业大学', '北京科技大学', '北京化工大学', '北京邮电大学', '北京林业大学', '北京协和医学院', '北京中医药大学', '首都师范大学', '北京外国语大学', '中国传媒大学', '中央财经大学', '对外经济贸易大学', '外交学院', '中国人民公安大学', '北京体育大学', '中央音乐学院', '中国音乐学院', '中央美术学院', '中央戏剧学院', '中国政法大学', '华北电力大学', '中国矿业大学', '中国石油大学', '中国地质大学', '中国科学院大学', '天津工业大学', '天津医科大学', '天津中医药大学', '河北工业大学', '太原理工大学', '内蒙古大学', '辽宁大学', '大连海事大学', '延边大学', '东北师范大学', '哈尔滨工程大学', '东北农业大学', '东北林业大学', '华东理工大学', '东华大学', '上海海洋大学', '上海中医药大学', '上海外国语大学', '上海财经大学', '上海体育学院', '上海音乐学院', '上海大学', '海军军医大学', '苏州大学', '南京航空航天大学', '南京理工大学', '南京邮电大学', '河海大学', '江南大学', '南京林业大学', '南京信息工程大学', '南京农业大学', '南京中医药大学', '中国药科大学', '南京师范大学', '中国美术学院', '宁波大学', '安徽大学', '合肥工业大学', '福州大学', '南昌大学', '河南大学', '武汉理工大学', '华中农业大学', '华中师范大学', '中南财经政法大学', '湖南师范大学', '暨南大学', '广州中医药大学', '华南师范大学', '广西大学', '海南大学', '西南大学', '西南交通大学', '西南石油大学', '成都理工大学', '四川农业大学', '成都中医药大学', '西南财经大学', '贵州大学', '西藏大学', '西北大学', '西安电子科技大学', '长安大学', '陕西师范大学', '空军军医大学', '青海大学', '宁夏大学', '石河子大学']
2.全国高校分布—数据处理
我们以教育部全国高等学校名单为数据源,统计全国各地(省、市)高校分布
、本科及专科院校分布
、民办院校分布
、各级主管单位所属院校分布
我们以教育部阳光高考院校库为数据源,统计一流大学建设高校分布
、一流学科建设高校分布
2.1.数据预处理
数据比较整齐,仅备注中公办类型未标注,这里做简单处理,添加 公办 标识
# 导入需要用到的库
import numpy as np
#将备注中空值改为 公办类型,用于后续统计
df.备注[df.备注==''] = '公办'
#pyecharts作图时需要去掉省市及自治州等属性标签
df['所在省']=df['所在省'].apply(lambda x:x.replace("省",'').replace("市",''))
df.所在省 = df.所在省.replace(['广西壮族自治区','新疆维吾尔自治区','内蒙古自治区','宁夏回族自治区','西藏自治区'],['广西','新疆','内蒙古','宁夏','西藏'])
df.所在地 = df.所在地.apply(lambda x: x.replace('市','').replace('地区','')
.replace('蒙古族藏族自治州','').replace('布依族苗族自治州','')
.replace('哈萨克自治州','').replace('白族自治州','')
.replace('苗族侗族自治州','').replace('哈尼族彝族自治州','')
.replace('土家族苗族自治州','').replace('回族自治州','')
.replace('彝族自治州','').replace('朝鲜族自治州','')
.replace('布依族苗族自治州','').replace('傣族景颇族自治州','')
.replace('藏族羌族自治州','').replace('蒙古自治州','')
.replace('壮族苗族自治州','').replace('柯尔克孜自治州','')
.replace('傣族自治州','').replace('藏族自治州','')
.replace('蒙古族藏族自治州','')
)
df.head()
序号 | 学校名称 | 学校标识码 | 主管部门 | 所在省 | 所在地 | 办学层次 | 备注 | |
---|---|---|---|---|---|---|---|---|
0 | 1 | 北京大学 | 4111010001 | 教育部 | 北京 | 北京 | 本科 | 公办 |
1 | 2 | 中国人民大学 | 4111010002 | 教育部 | 北京 | 北京 | 本科 | 公办 |
2 | 3 | 清华大学 | 4111010003 | 教育部 | 北京 | 北京 | 本科 | 公办 |
3 | 4 | 北京交通大学 | 4111010004 | 教育部 | 北京 | 北京 | 本科 | 公办 |
4 | 5 | 北京工业大学 | 4111010005 | 北京市 | 北京 | 北京 | 本科 | 公办 |
2.2.各省高校数
# 计算各省高校数
area = pd.pivot_table(df,values='学校名称',index='所在省',columns='备注',aggfunc='count',
margins=True,margins_name='合计').fillna(0).sort_values(by='合计',ascending=False).reset_index()
#删除行汇总
area.drop(0,axis=0,inplace=True)
area.head()
备注 | 所在省 | 中外合作办学 | 公办 | 内地与港澳台地区合作办学 | 民办 | 合计 |
---|---|---|---|---|---|---|
1 | 江苏 | 3.0 | 116.0 | 0.0 | 48.0 | 167 |
2 | 广东 | 2.0 | 100.0 | 2.0 | 50.0 | 154 |
3 | 山东 | 0.0 | 110.0 | 0.0 | 42.0 | 152 |
4 | 河南 | 1.0 | 107.0 | 0.0 | 43.0 | 151 |
5 | 四川 | 0.0 | 81.0 | 0.0 | 51.0 | 132 |
2.3.各市高校数
#计算各市高校数
city = pd.pivot_table(df,values='学校名称',index='所在地',columns='备注',aggfunc='count',
margins=True,margins_name='合计').fillna(0).sort_values(by='合计',ascending=False).reset_index()
#删除行汇总
city.drop(0,axis=0,inplace=True)
city.head()
备注 | 所在地 | 中外合作办学 | 公办 | 内地与港澳台地区合作办学 | 民办 | 合计 |
---|---|---|---|---|---|---|
1 | 北京 | 0.0 | 77.0 | 0.0 | 15.0 | 92 |
2 | 武汉 | 0.0 | 52.0 | 0.0 | 31.0 | 83 |
3 | 广州 | 0.0 | 53.0 | 0.0 | 29.0 | 82 |
4 | 重庆 | 0.0 | 39.0 | 0.0 | 29.0 | 68 |
5 | 郑州 | 1.0 | 42.0 | 0.0 | 22.0 | 65 |
2.4.本科&专科高校数
#计算办学层次中 本科及专科 分布
level = pd.pivot_table(df,values='学校名称',index='所在省',columns='办学层次',aggfunc='count',
margins=True,margins_name='合计').fillna(0).sort_values(by='合计',ascending=False).reset_index()
#删除行汇总
level.drop(0,axis=0,inplace=True)
level.head()
办学层次 | 所在省 | 专科 | 本科 | 合计 |
---|---|---|---|---|
1 | 江苏 | 89 | 78 | 167 |
2 | 广东 | 87 | 67 | 154 |
3 | 山东 | 82 | 70 | 152 |
4 | 河南 | 94 | 57 | 151 |
5 | 四川 | 79 | 53 | 132 |
2.5.民办&公办高校数
见**各省市高校数
**
2.6.各级主管单位所属高校数
#计算主管部门 分布
gov = pd.pivot_table(df,values='学校名称',index='主管部门',columns='办学层次',aggfunc='count',
margins=True,margins_name='合计').fillna(0).sort_values(by='合计',ascending=False).reset_index()
#删除行汇总
gov.drop(0,axis=0,inplace=True)
gov.head()
办学层次 | 主管部门 | 专科 | 本科 | 合计 |
---|---|---|---|---|
1 | 山东省 | 66.0 | 41.0 | 107 |
2 | 河南省 | 69.0 | 37.0 | 106 |
3 | 江苏省 | 68.0 | 38.0 | 106 |
4 | 广东省 | 61.0 | 37.0 | 98 |
5 | 湖南省 | 66.0 | 29.0 | 95 |
2.7.一流大学建设高校
该部分从college_42获取,一共42所
area_42 = college_42.groupby('院校所在地')['院校名称'].count().to_frame('数量').sort_values(by='数量',ascending=False).reset_index()
area_42.head()
院校所在地 | 数量 | |
---|---|---|
0 | 北京 | 8 |
1 | 上海 | 4 |
2 | 陕西 | 3 |
3 | 湖南 | 3 |
4 | 广东 | 2 |
2.8.一流学科建设高校
该部分从college_95获取,一共95所
area_95 = college_95.groupby('院校所在地')['院校名称'].count().to_frame('数量').sort_values(by='数量',ascending=False).reset_index()
area_95.head()
院校所在地 | 数量 | |
---|---|---|
0 | 北京 | 26 |
1 | 江苏 | 12 |
2 | 上海 | 10 |
3 | 四川 | 6 |
4 | 陕西 | 5 |
近期文章
Python网络爬虫与文本数据分析
rpy2库 | 在jupyter中调用R语言代码
tidytext | 耳目一新的R-style文本分析库
reticulate包 | 在Rmarkdown中调用Python代码
plydata库 | 数据操作管道操作符>>
plotnine: Python版的ggplot2作图库
七夕礼物 | 全网最火的钉子绕线图制作教程
读完本文你就了解什么是文本分析
文本分析在经管领域中的应用概述
综述:文本分析在市场营销研究中的应用
plotnine: Python版的ggplot2作图库
小案例: Pandas的apply方法
stylecloud:简洁易用的词云库
用Python绘制近20年地方财政收入变迁史视频
Wow~70G上市公司定期报告数据集
漂亮~pandas可以无缝衔接Bokeh
YelpDaset: 酒店管理类数据集10+G
“分享”和“在看”是更好的支持!