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

    CALayer3-层的属性   本文目录 一.隐式动画属性 二.position和anchorPoint 回到顶部 一.隐式动画属性 * 在前面几讲中已经提到,每一个UIView内部都默认关联着一个C ...

  2. EXE加锁器 只是思路

    代码有点乱 但是我不想整理 // AddBoxDlg.cpp : 实现文件 // #include "stdafx.h" #include "AddBox.h" ...

  3. virtual_login

    from selenium import webdriverimport timedriver = webdriver.Chrome()driver.set_window_position(30, 4 ...

  4. linux之PATH环境变量

    在linux中,我们发现一些命令在任何目录都能执行,并不会出现找不到这个命令文件的提示,这其中就是PATH变量帮我们定位的!首先我们来查看一下PATH变量 [root@localhost /]# ec ...

  5. daydayup1 codeforces141c

    题意:给定n个数字,代表每个人前面有几个人比他高,让你构造一个height数组,满足条件 思路:直接贪心就好,假设到第i个人,设他的高度为i-a[i]+1,前面比他高的人每个人的高度加1

  6. 详解.Net消息队列(MSMQ)应用

    [IT168 技术文档]MSMQ是Windows 2000.Windows XP.Windows Server 2003的一个组件,并将继续包含在Windows Vista和以后的Windows服务器 ...

  7. Hibernate实体关系映射(OneToMany单边)——完整实例

    单边一对多关系:电子邮件管理 单边一对多关系:指一方有集合属性,包含多个多方,而多的一方没有一方的引用. 比如:用户(一)与电子邮件(多).一个用户可以有多个电子邮件记录. 目的:通过OneToMan ...

  8. https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform

    https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform

  9. [导读]Learning from Imbalanced Classes

    原文:Learning from Imbalanced Classes 数据不平衡是一个非常经典的问题,数据挖掘.计算广告.NLP等工作经常遇到.该文总结了可能有效的方法,值得参考: Do nothi ...

  10. 面试复习(C++)之直接插入排序

    #include <iostream> using namespace std; void Insertsort(int *a,int len) { ;j<len;j++) { in ...