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


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

  • 相关阅读:
    c# 泛型集合Dictionary
    int+? int后带问题是什么意思,请看内容。
    在ASP.NET中实现Url ReWriting 示例
    #DataDirectory是什么意思呢?
    vs2008生成自定义dll,VS2008发布、生成网站时设置固定的dll文件名?
    平台安装注意事项
    快速开发平台程序运行环境
    快速开发平台介绍(动态)
    快速开发平台程序安装包20120612
    JavaFx 2.0总结
  • 原文地址:https://www.cnblogs.com/chenbjin/p/4657352.html
Copyright © 2020-2023  润新知