帶你用python解讀高考數據:全國哪裏的高校最多?什麼專業最熱門?

CDA數據分析師 出品

做者:Mikajson

數據:真達 api

後期:澤龍瀏覽器

【導讀】

今天咱們用數據來聊一聊高考。Python技術分析請看第二部分網絡

Show me data,用數聽說話app

今天咱們聊一聊 高考dom

高考是人生中很是難忘的一段體驗,而今年的高考尤其特別。因爲今年疫情的影響,3月31日教育部宣佈高考延期一個月,從原本的6月推遲到在7月7日至7月8日舉行,這是17年來,我國首次調整高考時間。函數

而2020年的高考生也真是特別不容易。熬過疫情的漫長黑夜,見證了歷史性的高考延期,多了一個月的埋頭苦讀,多了一個月對心態的考驗。post

那麼歷年的高考人數、錄取率如何?哪一個地區的高校最多?都有什麼專業最熱門?今天咱們就用數據來聊一聊。網站

01回顧歷年高考人數和錄取率url

咱們蒐集整理了自1977年恢復高考以來到2019年,這四十多年來高考人數、錄取人數和錄取率的數據。

歷年高考人數數據

在圖中咱們能夠看到:

高考人數:

參加高考的人數逐年遞增,2008年高考人數達到峯值1050萬。以後幾年人數有所回落。而今年,2020年全國考生人數創新高達到1071萬,是自2009年後十年來再次破千萬。也是近年來人數最多的一年,

錄取人數:

錄取人數基本都是逐年遞增,在1997年的時候,高校錄取人數終於突破了百萬大關。

錄取率:

錄取率也基本是逐年遞增,在2005年到2008年這四年時間,錄取率相對往年是降低的;隨後伴隨高校陸續擴招,錄取率增加很快;到了2017年,錄取率達到了82%,整體來講高等教育的普及率是愈來愈高了。

接着,咱們看到去年2019年各省份的高考一本錄取數據:

2019年各省份一本錄取線

首先在高考人數上,河南遙遙領先,高考人數破百萬,達到103萬,妥妥的高考大省,其中一本錄取人數爲12.92萬,一本錄取率爲12.54%。其次,廣東、四川的高考人數也不容小覷,分別爲76萬和65萬,一本錄取率分別爲12.87%和14.72%。

02 國內理工類院校佔三分之一

江蘇高校數量最多

高考學子千千萬,那麼我國各省市的高校分佈又是怎樣的呢?全國哪一個地方的高校最多?

咱們分析了中國教育在線網站(https://gkcx.eol.cn/)的高校數據,當中包含本科院校和高職(專科)院。

如何獲取數據

咱們使用Python獲取了中國教育在線網站的高校數據,共2904條。如下展現數據獲取部分代碼:

https://gkcx.eol.cn/school/se... 

具體思路以下:

  1. 分析網頁,經過翻頁能夠發現數據是動態加載的,所以經過Chrome瀏覽器進行抓包分析獲取真實的URL請求地址,並肯定請求方式(get仍是post);
  2. 使用requests請求網頁數據;
  3. 使用json解析並提取數據;
  4. 使用pandas將數據保存到本地

首先打開網址,使用Chrome瀏覽器的檢查功能,切換到Network-XHR,點擊翻頁進行網絡數據抓包,很容易發現數據都是被封裝在json中的,以下圖所示:

切換到Headers處,肯定請求的方法爲post請求,獲得數據請求的URL地址,其中page參數表明頁數,經過遍歷便可獲取全部數據。代碼以下:

`# 導入包
import numpy as np
import pandas as pd
import requests
import json
from fake_useragent import UserAgent
import time

 獲取一頁

def get_one_page(page_num):
    # 獲取URL
    url = 'https://api.eol.cn/gkcx/api/'

    # 構造headers
    headers = {
        'User-Agent': UserAgent().random,
        'Origin': 'https://gkcx.eol.cn',
        'Referer': 'https://gkcx.eol.cn/school/se...',
    }

    # 構造data
    data = {
        'access_token': "",
        'admissions': "",
        'central': "",
        'department': "",
        'dual_class': "",
        'f211': "",
        'f985': "",
        'is_dual_class': "",
        'keyword': "",
        'page': page_num,
        'province_id': "",
        'request_type': 1,
        'school_type': "",
        'size': 20,
        'sort': "view_total",
        'type': "",
        'uri': "apigkcx/api/school/hotlists",
    }

    # 發起請求
    try:
        response = requests.post(url=url, data=data, headers=headers)
    except Exception as e:
        print(e) 
        time.sleep(3) 
        response = requests.post(url=url, data=data, headers=headers)

    # 解析獲取數據
    school_data = json.loads(response.text)['data']['item']

    # 學校名
    school_name = [i.get('name') for i in school_data]
    # 隸屬部門
    belong = [i.get('belong') for i in school_data]
    # 高校層次
    dual_class_name = [i.get('dual_class_name') for i in school_data]
    # 是否985
    f985 = [i.get('f985') for i in school_data]
    # 是否211
    f211 = [i.get('f211') for i in school_data]
    # 辦學類型
    level_name = [i.get('level_name') for i in school_data]
    # 院校類型
    type_name = [i.get('type_name') for i in school_data]
    # 是否公辦
    nature_name = [i.get('nature_name') for i in school_data]
    # 人氣值
    view_total = [i.get('view_total') for i in school_data]
    # 省份
    province_name = [i.get('province_name') for i in school_data]
    # 城市
    city_name = [i.get('city_name') for i in school_data]
    # 區域
    county_name = [i.get('county_name') for i in school_data]

    # 保存數據
    df_one = pd.DataFrame({
        'school_name': school_name,
        'belong': belong,
        'dual_class_name': dual_class_name,
        'f985': f985,
        'f211': f211,
        'level_name': level_name,
        'type_name': type_name,
        'nature_name': nature_name,
        'view_total': view_total,
        'province_name': province_name,
        'city_name': city_name,
        'county_name': county_name,
    })

    return df_one

 獲取多頁

def get_all_page(all_page_num):
    # 存儲表
    df_all = pd.DataFrame()

    # 循環頁數
    for i in range(all_page_num):
        # 打印進度
        print(f'正在獲取第{i + 1}頁的高校信息')
        # 調用函數
        df_one = get_one_page(page_num=i+1)
        # 追加
        df_all = df_all.append(df_one, ignore_index=True)
        # 隨機休眠
        time.sleep(np.random.uniform(2))

    return df_all

if __name__ == '__main__':
    # 運行函數
    df = get_all_page(all_page_num=148) ` 

經過上述程序,共獲取到2904條數據,數據預覽以下:

df.head() 

分析結果

全國院校分佈:江蘇高校數量第一

通過分析發現,江蘇省在高校數量上拔得頭籌,以174所高校位居榜首。其次北京有167所,山東和廣東緊隨其後,均爲161所。

全國高校層次:北京的98五、211院校最多

咱們進一步分析數據發現,在各省市的高校層次分佈中,除了雙非院校,211院校方面,北京的最多有27所,而後是江蘇11所,上海10所。985院校方面呢,北京9所,其次山東和上海均有4所。

高校類型:國內三分之一都是理工院校

而後咱們在放眼全國的高校類型,能夠看到理工類院校是最多的,佔比高達30.93%。接着就是綜合類院校了,佔比爲29.14%。師範類有8.7%。

大學熱度排名:廈門位居榜首

中國教育在線網站還有根據搜索數據統計了高校的人氣值。

咱們對各個高校的人氣值進行統計發現:

在全國大學的人氣值排名中,廈門大學位居榜首,武漢大學位居第二,四川大學位居第三。北大清華位居四五位。

03工學專業最多 數據解讀報考專業

說完了高校,咱們再來聊聊專業。咱們接着對中國教育在線的專業數據進行了分析整理,共獲取1450 條數據。

學科專業:工學專業最多,哲學最少

哪些學科的下分專業最多呢?統計發現,工程學科下的專業多達212種,而後是文學,下分的專業有122種。而哲學這一學科下分的專業最少,僅爲4種。

專業熱度排名:臨牀醫學搜索最多

一樣的,咱們也對專業的人氣值進行了分析統計:

結果發現,臨川醫學的搜索度特別高,位居首位。其次是商務經濟學,以及電氣工程與智能控制。

#沒學過卻很好奇的專業# 你們對什麼專業最好奇

在專業方面,網友們又對對哪些專業感興趣呢?微博上#沒學過卻很好奇的專業#這一話題目前閱讀達到1.3億,討論達到1.3萬。

咱們從中獲取並分析了3544條數據,能夠看到:

你們最好奇的專業排行榜上:心理學是妥妥的首位,看來現在人們是愈來愈重視心理健康了。第二位是護理學,第三位是考古學。

以上就是本次的所有分析啦,最後祝本次高考學子都能取得好成績,進入理想的大學!

相關文章
相關標籤/搜索