數據分析:中國高校改名歷史 Python

  上週領了新任務,作國內高校更名歷史的統計,這個挺有意思,如下是我任務完成過程,和你們分享。
一. 數據收集
  數據需求:目前已有高校校名,各高校更名歷史記錄
  高校校名數據來源:嘗試從高校排名網站( iPIN), 中國教育和科研計算機網等抓取,但高校名不全,前者709,後者1394,最後從教育部找到一份名單: 「2015年全國高等學校名單」,基於教育部的信息比較權威可靠,本人想法是抓取教育部發布的教發函來收集高校更名信息。
  高校更名數據來源: 教育部信息綜合搜索,鑑於教育部發布的信息衆多,且教發函格式不一,本人分紅幾個類別抓取:合併,改名,創建,在xx基礎上創建,轉設。而後根據搜索跳轉的URL,抓取不一樣類別,大概狀況如圖:
  從截圖能夠觀察到跳轉的URL,因此更換掉關鍵詞部分,從新查詢便能得到新的結果,再根據頁數跳轉抓取全部有關通知。具體實現細節比較繁瑣,有興趣同窗能夠看 github上的代碼:最後數據結果以下:
  1. 高校校名:普通高等學校2553所
  2. 改名歷史:教育部1995-2015發佈的教發函,約665份,教育部公示1990-2006年5月高校合併狀況,431條記錄。
二. 數據分析

  接下來就是對數據進行清洗,規則處理的過程,雖然沒用到什麼算法,但滿滿都是淚啊~~基本你們都能看懂,詳細代碼點這裏,大概流程以下:php

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()

 三. 分析結果html

  標記結果:原文件學校2554個,增長至2690個,總共標記828個學校。不少專科學校也添加進去了~基本上完成任務。估計作成列表也是挺壯觀的,下面是部分結果:git

{  
  "廣東海洋大學": [
        "湛江農業專科學校",
        "湛江海洋大學",
        "湛江水產學院"
    ],
    "廣東海洋大學寸金學院": [],
    "廣東環境保護工程職業學院": [],
    "廣東理工學院": [
        "肇慶科技職業技術學院"
    ],
    "廣東理工職業學院": [],
    "廣東生態工程職業學院": [],
    "廣東白雲學院": [],
    "廣東省外語藝術職業學院": [],
    "廣東石油化工學院": [
        "茂名學院",
        "廣東石油化工高等專科學校",
        "廣東省茂名教育學院",
        "茂名石油工業公司職工大學"
    ],
    "廣東碧桂園職業學院": [],
    "廣東科學技術職業學院": [],
    "廣東科技學院": [
        "東莞南博職業技術學院"
    ],
    "廣東科貿職業學院": [],
    "廣東第二師範學院": [
        "廣東教育學院"
    ],
    "廣東職業技術學院": [],
    "廣東舞蹈戲劇職業學院": [],
    "廣東藥學院": [],
    "廣東行政職業學院": [],
    "廣東警官學院": [
        "廣東公安高等專科學校"
    ],
    "廣東財經大學": [
        "廣東商學院"
    ],
    "廣東財經大學華商學院": [],
    "廣東輕工職業技術學院": [
        "廣州輕工業學校"
    ],
    "廣東郵電職業技術學院": [],
    "廣東金融學院": [
        "廣州金融高等專科學校"
    ],
}

  基本任務就是這樣,完整項目見這裏schoolCard,有問題的朋友能夠交流。github

參考資料:算法

1.愛拼網iPIN:http://www.ipin.com/school/ranking.dojson

2.中國教育和科研計算機網:http://ziyuan.eol.cn/list.php?listid=128網站

3.教育部:http://www.moe.gov.cn/jyb_sy/spa

相關文章
相關標籤/搜索