Py学习  »  Python

用 Python 分析高校信息助力志愿填报

Python中文社区 • 3 年前 • 458 次点击  


随着高考的结束,广大师生和家长也都把注意力转移到了填报志愿上,而前不久国家教育部也公布了《全国普通高等学校名单》(网址:http://www.moe.gov.cn/jyb_xxgk/s5743/s5744/202007/t20200709_470937.html),这份名单包含了中国大陆所有专科和本科高校的基本信息,对广大考生填报志愿和了解当前国家教育资源的分布情况是非常有用的。而今天笔者就用python来分析一下这份名单,从省、市两个级别,用图形和数据的方式,让大家了解一下当前全国普通高校的地理分布。

一、文件概览


图1. 全国普通高等学校名单网页

图2. 全国普通高等学校名单内容截图

图3. 修改后的全国普通高等学校名单

首先我们还是大概浏览一下这份《全国普通高等学校名单》,如图1所示,在浏览器中打开上述网址,然后下载附件一,这是一个Excel文件,部分信息截图如图2所示。从图中可以看到,里面包含了高校的基本信息,如学校名称、学校标识码、主管部门、所在地、办学层次以及备注等,同时也包含了一些不必要的格式和数据,如合并单元格以及一些无用的文字。用python读取这种表格时,里面不必要的格式和数据会对我们的正常分析产生干扰,所以我们要对这个文件进行一定的修改。修改后的文件如图3所示,里面所有的相关信息都得到了保留,只删除了一些不必要的单元格,同时又加入了一列“省份”信息,表示每所学校所在的省份,我们将这份文件命名为“全国普通高等学校名单.xlsx”,下面我们就用python来分析一下这份文件。

二、编程环境

操作系统:Windows7专业版 软件:Anaconda 2020.02版 所使用的主要库:pandas 0.25.1版,pyecharts 1.8.1版

三、代码详述

首先导入所需要的各种库。

import pandas as pd
from pyecharts.charts import Map
from pyecharts.charts import Geo
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.globals import CurrentConfig, OnlineHostType
CurrentConfig.ONLINE_HOST = OnlineHostType.NOTEBOOK_HOST #将pyecharts设置为离线使用
  1. 全国各省/直辖市高校数量分析

首先我们从地理位置上来看一下,各个省/直辖市的高校数量分布情况。首先读取各个省份的高校信息,这里变量provinces是dict_items格式,要将其转换成list格式,命名为provinces_items,因为provinces_items中每一项都是tuple,而tuple是不能修改的数据类型,所以要把provinces_items中每一项都转换为list,便于我们后面修改数据。代码如下。

file = r'C:\Users\a\Desktop\全国普通高等学校名单.xlsx' #目标文件
data2020 = pd.read_excel(file, sheet_name='2020'#读取目标文件
provinces = data2020['省份'].value_counts().to_dict() #读取高校省份信息并转化为dict
provinces_items = list(provinces.items()) #转换为list格式
for i in range(len(provinces_items)): #把这里面的每个tuple转换为list
provinces_items[i]=list(provinces_items[i])

然后我们要把每个省/直辖市的名称做一下修改,pyecharts中省级地名不能包含“省”、“市”、“自治区”等字,只能是单一的地名,以四川省为例,只能用“四川”,不能是“四川省”,否则pyecharts无法读取。

for i in provinces_items: #去掉省、市、自治区这些字词
    if len(i[0])==4:
        i[0]=i[0][:3]
    elif i[0][:3]=='内蒙古':
        i[0]='内蒙古'
    else:
        i[0]=i[0][:2]

接下来就是绘制地图,代码如下,结果如图5所示(动图)。




    
map1 = Map() #绘制各省高校数量地图,因为map在python中是保留字,所以变量名用map1
(
    map1.add("", data_pair=provinces_items, maptype="china")
    .set_global_opts(title_opts=opts.TitleOpts(title="国内各省普通高校数量"),
            tooltip_opts=opts.TooltipOpts(trigger="item", formatter='{b}: {c}'), #设置鼠标提示信息
            visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
            pieces=[{"max"40"min"1"label""1-40"},
                    {"max"80"min"41"label""41-80"},
                    {"max"120"min"81"label""81-120"},
                    {"max"160"min"121"label""121-160"},
                    {"max"200"min"161"label""161-200"}]
                       ))
    .render_notebook()
)

图4. 各省普通高校数量

把鼠标置于所在省份的位置上,就会显示该省所拥有的高校数量,该数据目前仅包含大陆高校,港澳台地区暂时未包括在内,所以这些地区的地图都为灰色。从图中可以看到,江苏、山东、河南等省的高校数量最多,而西藏、青海、宁夏以及海南等省的高校数量相对较少。

  1. 全国各主要城市高校数量分析

上面的分析中我们是从省/直辖市级别来概览全国高校的分布,接下来我们再从城市的维度来看一下全国高校的分布,这个数据会比上面的更详细一些。首先还是读取相关信息,转换成dict_items格式,然后再转换成list格式,最后得到名为location_items的变量,在这里我们要去掉“克孜勒苏柯尔克孜自治州”和“铁门关市”这两个地方,因为pyecharts中未收录这两个地名,这两个地方高校数都很少(都是只有一所高校),去掉之后对整体数据影响不大。

locations_dict= data2020['所在地'].value_counts().to_dict() #读取所在地的信息
locations_items= list(locations_dict.items()) #转换成list格式
locations_items.remove(('克孜勒苏柯尔克孜自治州'1)) #去掉该数据
locations_items.remove(('铁门关市'1)) #去掉该数据
接下来是绘制各城市高校数量地图,结果如图5所示(动图)。
geo = Geo()
(
    geo.add("", data_pair=locations_items, type_="scatter", symbol_size=5)
    .add_schema(maptype='china')
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="国内各主要城市高校分布"),
        visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
            pieces=[{"max"20"min"1"label""1-20"},
                    {"max"40"min"21"label""21-40"},
                    {"max"60"min"41"label""41-60"},
                    {"max"80"min"61"label""61-80"},
                    {"max"100"min"81"label""81-100"}]
                       ))
    .render_notebook()
)

图5. 国内各主要城市高校分布

从图中我们可以看出,高校的主要分布城市都集中在中北部、中部以及南部地区,而东部、北部以及西部地区的高校所在城市偏少,尤其是西藏地区,全地仅有拉萨一座城市拥有高等院校。

四、结语

本篇文章笔者用python分析了今年所有普通高校的基本情况,因为该数据来自中国教育部,所以数据本身还是非常有权威性的,也希望本篇文章能帮助大家更好地了解国家的高等教育资源的整体情况,给广大考生填报志愿提供一定的帮助。对于本文的数据和完整代码,从公众号底部回复“高校”即可下载。

作者简介:Mort,数据分析爱好者,擅长数据可视化,比较关注机器学习领域,希望能和业内朋友多学习交流。

赞 赏 作 者



Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。


推荐阅读:
用 Python 进行系统聚类分析
用 Python 对数据进行相关性分析
如何在 matplotlib 中加注释和内嵌图
如何用一行代码让 gevent 爬虫提速 100%


▼点击成为社区会员   喜欢就点个在看吧

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/71959
 
458 次点击