上周领了新任务,做国内高校改名历史的统计,这个挺有意思,以下是我任务完成过程,和大家分享。
一. 数据收集
  数据需求:目前已有高校校名,各高校改名历史记录
  高校校名数据来源:尝试从高校排名网站(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/

数据分析:中国高校更名历史 Python的更多相关文章

  1. Django中国|Django中文社区——python、django爱好者交流社区

    Django中国致力于成为Python和Django框架等技术的中文开发者学习交流平台. 内容涵盖python教程.python基础.Django教程.python入门.web.py教程.linux教 ...

  2. Python网络爬虫实战:根据天猫胸罩销售数据分析中国女性胸部大小分布

    本文实现一个非常有趣的项目,这个项目是关于胸罩销售数据分析的.是网络爬虫和数据分析的综合应用项目.本项目会从天猫抓取胸罩销售数据,并将这些数据保存到SQLite数据库中,然后对数据进行清洗,最后通过S ...

  3. (数据分析)第02章 Python语法基础,IPython和Jupyter Notebooks.md

    第2章 Python语法基础,IPython和Jupyter Notebooks 当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题: ...

  4. (python数据分析)第03章 Python的数据结构、函数和文件

    本章讨论Python的内置功能,这些功能本书会用到很多.虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的. 我们会从Python最基础 ...

  5. 腾讯2019年暑期实习生招聘在线笔试技术研究和数据分析方向第二题(python)

    def printindex(n,arr): # n = int(input()) # arr = list(map(int,input().split(' '))) li1=[] li2=[] fo ...

  6. 2019年GPLT L2-1 特立独行的幸福 比赛题解 中国高校计算机大赛-团体程序设计天梯赛题解

    对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...

  7. 2019年GPLT L2-4 彩虹瓶 比赛题解 中国高校计算机大赛-团体程序设计天梯赛题解

    彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里. 假设彩虹瓶里要按顺序装 N 种颜色的小球(不妨将顺序就编号为 1 到 N).现 ...

  8. 2019年GPLT L2-3 深入虎穴 比赛题解 中国高校计算机大赛-团体程序设计天梯赛题解

    著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报.已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一扇门背后或者是一个房间,或者又有很多条路,同样是每条 ...

  9. 中国大学MOOC课程信息之数据分析可视化一

    版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/82263391 9月2日更:中国大学MOOC课程信息之数据分 ...

随机推荐

  1. Oracle查询

    1.普通查询 select * from 表格 查询所有内容 select 列名,列名 from 表格查询某几列 2.条件查询 select * from 表格 where 条件 条件查询 selec ...

  2. DeviceIoControl 应用层如何和驱动层通信?

    调用的方法之一的DeviceIoControl 驱动层提供设备名 例如filedisk 在驱动层 首先先是注册列表 用winObj查看 filedisk的驱动对象 但是 这八个对象时怎么生成的呢? 我 ...

  3. 【 2013 Multi-University Training Contest 3 】

    HDU 4622 Reincarnation 枚举字符串的起点,构造后缀自动机,每次插入一个字符,就能统计得到当前不同字串的个数,预处理出所有的询问. #include<cstdio> # ...

  4. 个人记录比较好的css样式

    background:#835838;  filter:alpha(opacity=70);-moz-opacity:0.7;opacity:0.8; 设置背景颜色为透明! IE6. IE7.IE8. ...

  5. NOIP2016之反面教材提供

    NOIP 2016信息竞赛总结 竞赛历程总结: 算下来一共学了11个月的信息竞赛,从最初进来的时候大概会一点最最基础的语法,上课什么也听不懂,然后一直追进度,我想在这个阶段中我的问题主要是自己知道自己 ...

  6. error MSB6006: “CL.exe”已退出,代码为X —— 的解决办法

    错误 : error MSB6006: “CL.exe”已退出,代码为X . 解决方法: 1.有少可能是执行目录引起的. 参考 http://bbs.csdn.net/topics/370064083 ...

  7. 查询数据库表大小sql

    SELECT a.name, b.rowsFROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.idWHERE (a.type = ' ...

  8. Visor 应用之一 通过ER 设计生成数据库脚本和实体对象

    前言 Visor(http://www.visor.com.cn)   是一个基于HTML5 Canvas 开发的IDE 框架和设计开发平台,有关Visor的设计架构和技术应用,在以后的文章里会逐渐跟 ...

  9. 正则匹配中文 UTF-8 & GBK

    在php 中: //GB2312汉字字母数字下划线正则表达式 GBK: preg_match("/^[".chr(0xa1)."-".chr(0xff).&qu ...

  10. asp.net页面生命周期的文章推荐

    http://www.codeproject.com/Articles/73728/ASP-NET-Application-and-Page-Life-CycleELMAH