您的位置:首页 > 编程语言 > Python开发

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

2015-07-18 20:46 609 查看
  上周领了新任务,做国内高校改名历史的统计,这个挺有意思,以下是我任务完成过程,和大家分享。
一. 数据收集
  数据需求:目前已有高校校名,各高校改名历史记录
  高校校名数据来源:尝试从高校排名网站(iPIN),中国教育和科研计算机网等抓取,但高校名不全,前者709,后者1394,最后从教育部找到一份名单:“2015年全国高等学校名单”,基于教育部的信息比较权威可靠,本人想法是抓取教育部发布的教发函来收集高校改名信息。
  高校改名数据来源:教育部信息综合搜索,鉴于教育部发布的信息众多,且教发函格式不一,本人分成几个类别抓取:合并,更名,建立,在xx基础上建立,转设。然后根据搜索跳转的URL,抓取不同类别,大概情况如图:



  从截图可以观察到跳转的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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: