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

    自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet.cuda-convnet2. ...

  2. 《Android深度探索》(卷1)HAL与驱动开发读后感:

    第一章:安卓系统移植与驱动开发概述 全书分为4篇,分别从搭建开发环境,Linux驱动和Android HAL的基础知识,开发Linux驱动的高级技术和分析典型的Linux驱动源代码4个方面介绍Andr ...

  3. python常用的内置库

    标准库: import os os.getcwd()  //返回当前工作路径 os.chdir('/server/accesslogs')   # Change current working dir ...

  4. JavaScript 基础知识之对比记忆学习

    1.  alter修改(易写混),alert警告 alert 函数语法:alert(str);str字符串用单引号或双引号隔开 2.标识符和关键字 标识符:由不以数字开头的字母.数字.下划线.$组成. ...

  5. 【转帖】Python在大数据分析及机器学习中的兵器谱

    Flask:Python系的轻量级Web框架. 1. 网页爬虫工具集 Scrapy 推荐大牛pluskid早年的一篇文章:<Scrapy 轻松定制网络爬虫> Beautiful Soup ...

  6. apache 重定向

    <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^(.*) https:// ...

  7. C++数据类型和变量类型。

    数据类型 数字是自由的[不只属于某个类型]!但是它可以有不同的身份!int.char.float.double等身份.它以不同的身份[存储规则]存储在内存的某个位置内部! 变量类型 内存编号是不会变的 ...

  8. 锋利的JQuery 学习笔记

    第一章                认识JQuery ·页面加载事件(可以写多个ready())$(document).ready(function(){alert(“hello world”);} ...

  9. Javascript DOM编程艺术 语法部分

    1.变量,可以变化的东西我们称为变量,随着年龄的增大,我们的age不断变大 2.Javascript变量声明用var,可以不声明变量类型.尽量声明为一个字符串字面量. 3.弱类型:要求程序员必须明确的 ...

  10. 近期编程问题——read:resource temporarily unavailable

    EAGAIN错误 出现问题:read:resource temporarily unavailable 原因:这种错误一般出现宰非阻塞的socket编程中,资源暂时不可用. 我的解决方法:囧,后来改成 ...