转载

数据分析:中国高校更名历史 Python

上周领了新任务,做国内高校改名历史的统计,这个挺有意思,以下是我任务完成过程,和大家分享。

一. 数据收集

数据需求:目前已有高校校名,各高校改名历史记录

高校校名数据来源:尝试从高校排名网站( iPIN ), 中国教育和科研计算机网 等抓取,但高校名不全,前者709,后者1394,最后从教育部找到一份名单: “2015年全国高等学校名单” ,基于教育部的信息比较权威可靠,本人想法是抓取教育部发布的教发函来收集高校改名信息。

高校改名数据来源: 教育部信息综合搜索 ,鉴于教育部发布的信息众多,且教发函格式不一,本人分成几个类别抓取:合并,更名,建立,在xx基础上建立,转设。然后根据搜索跳转的URL,抓取不同类别,大概情况如图:

数据分析:中国高校更名历史 Python

从截图可以观察到跳转的URL,所以更换掉关键词部分,重新查询便能获得新的结果,再根据页数跳转抓取所有有关通知。具体实现细节比较繁琐,有兴趣同学可以看 github上的代码 :最后数据结果如下:

1. 高校校名:普通高等学校2553所

2. 更名历史:教育部1995-2015发布的教发函,约665份,教育部公示1990-2006年5月高校合并情况,431条记录。

二. 数据分析

接下来就是对数据进行清洗,规则处理的过程,虽然没用到什么算法,但满满都是泪啊~~基本大家都能看懂,详细代码点 这里 ,大概流程如下:

import re import string import json sch = {} #学校更名历史字典 remain_sch = {}  #添加的学校 #处理高校合并通知 def dealCombineRP(rp_file): #处理高校建立通知,原通知不完整,数据已从通知文件中补全 def dealFoundRP(rp_file): #处理高校更名通知 def dealRenameRP(rp_file): #处理高校转设通知 def dealSetupRP(rp_file): #处理高校建立通知 def dealUpgradeRP(rp_file): #处理教育部合并通知:1990-20060515 def dealCombineFile(combine_file): #去重处理,去掉重复更名(合并) def removeDuplicate(): #导入学校名 def loadSchoolName(): #结果保存为json格式 def showResult() def main():  global sch  global remain_sch  sch_file = "./data/sch_name/sch_name_gov.txt"  rp_rename_file = "./data/reports/reports_rename.txt"  rp_upgrade_file = "./data/reports/reports_upgrade.txt"  rp_setup_file = "./data/reports/reports_setup.txt"  rp_found_file = "./data/reports/reports_found.txt"  rp_combine_file = "./data/reports/reports_combine.txt"  school_combine_since1990 = "./data/reports/school_combine_since1990.txt"  sch = loadSchoolName(sch_file)  #print "before:",len(sch)   dealSetupRP(rp_setup_file)  dealCombineFile(school_combine_since1990)  dealCombineRP(rp_combine_file)   dealFoundRP(rp_found_file)  dealRenameRP(rp_rename_file)  dealUpgradeRP(rp_upgrade_file)  #print "after:",len(sch)  removeDuplicate()  showResult() if __name__ == '__main__':  main() 

三. 分析结果

标记结果:原文件学校2554个,增加至2690个,总共标记828个学校。很多专科学校也添加进去了~基本上完成任务。估计做成列表也是挺壮观的,下面是部分结果:

{     "广东海洋大学": [   "湛江农业专科学校",   "湛江海洋大学",   "湛江水产学院"  ],  "广东海洋大学寸金学院": [],  "广东环境保护工程职业学院": [],  "广东理工学院": [   "肇庆科技职业技术学院"  ],  "广东理工职业学院": [],  "广东生态工程职业学院": [],  "广东白云学院": [],  "广东省外语艺术职业学院": [],  "广东石油化工学院": [   "茂名学院",   "广东石油化工高等专科学校",   "广东省茂名教育学院",   "茂名石油工业公司职工大学"  ],  "广东碧桂园职业学院": [],  "广东科学技术职业学院": [],  "广东科技学院": [   "东莞南博职业技术学院"  ],  "广东科贸职业学院": [],  "广东第二师范学院": [   "广东教育学院"  ],  "广东职业技术学院": [],  "广东舞蹈戏剧职业学院": [],  "广东药学院": [],  "广东行政职业学院": [],  "广东警官学院": [   "广东公安高等专科学校"  ],  "广东财经大学": [   "广东商学院"  ],  "广东财经大学华商学院": [],  "广东轻工职业技术学院": [   "广州轻工业学校"  ],  "广东邮电职业技术学院": [],  "广东金融学院": [   "广州金融高等专科学校"  ], } 

基本任务就是这样,完整项目见这里 schoolCard ,有问题的朋友可以交流。

参考资料:

1.爱拼网iPIN:http://www.ipin.com/school/ranking.do

2.中国教育和科研计算机网:http://ziyuan.eol.cn/list.php?listid=128

3.教育部:http://www.moe.gov.cn/jyb_sy/

正文到此结束
Loading...