首頁 > 2020年全省高考人數

2020年全省高考人數

互聯網 2021-07-26 23:39:21
開始

突發奇想, 想看下高考成績的分佈, 如果把每個省市的成績劃線成0-100 分會怎麼樣,簡單的來說, 認為最高分的考了100分,最低分考了0分, 計算一下各個分數段的人數就好了,

順便可以用這個數據看每個省市的一本線劃分比率,還有其他相關的數據,

看起來還是比較簡單的, 動手試試

數據收集

網上找了一下, 每年的高考人數, 現在已經超過千萬人高考了,河南更是超過了100萬,數據來源:新浪教育 https://edu.sina.cn/zt_d/gkbm

省/市2020年2019年2018年2017年2016年2015年2014年2013年2012年全國1071萬↑1031萬↑975萬↑940萬940萬↓942萬↑939萬↑912萬↓915萬↓河南115.8萬↑100萬+↑98.3萬↑86.3萬↑82萬↑77.2萬↑72.4萬↓71.63萬↓80.5萬↑廣東78.8萬↑76.8萬↑75.8萬↑75.7萬↑73.3萬↓75.4萬↓75.6萬↑72.7萬↑69.2萬↑四川67萬↑65萬↑62萬↑58.3萬↑57.13萬超57萬57.17萬↑54萬↑53.8萬↑河北62.48萬↑55.96萬↑48.6萬↑43.6萬↑42.31萬↑40.48萬↓41.82萬↓44.98萬↓45.93萬↓安徽52.38萬↑51.3萬↑49.9萬49.9萬↓50.99萬↓54.6萬↑52.7萬↑51.1萬↑50.6萬↓湖南53.7萬↑50萬↑45.2萬↑41.1萬↑40.16萬↑38.99萬↑37.8萬↑37.3萬↑35.2萬↓山東53萬↓55.99萬↑59.2萬↑58.3萬↓60.2萬↑69.61萬↑55.8萬↑50萬↓51萬↓廣西50.7萬↑46萬↑40萬↑36.5萬↑33萬餘↑近31萬↓31.5萬↑29.8萬↑28.5萬↓貴州47萬↑45.8萬↑44.1萬↑41.2萬↑37.38萬↑33.05萬↑29.27萬↑24.78萬↓24.8萬↑江西38.94萬↓42.1萬↑38萬↑36.5萬↑36.06萬↑35.46萬↑32.59萬↑27.43萬↑26.9萬↓湖北39.48萬↑38.4萬↑37.4萬↑36.2萬↑36.14萬↓36.84萬↓40.27萬↓43.8萬↓45.7萬↓江蘇34.89萬↑33.9萬↑33萬33萬↓36.04萬↓39.29萬↓42.57萬↓45.1萬↓47.4萬↓山西32.6萬↑31.4萬↑30.5萬↓31.7萬↓33.9萬↓34.22萬↑34.16萬↓35.8萬↓36.1萬↑雲南34.3萬↑32.6萬↑30萬↑29.3萬↑28萬↑27.21萬↑25.59萬↑23.6萬↑21萬↓陝西32.23萬↓32.59萬↑31.9萬31.9萬↓32.8萬餘↓34.4萬↓35.3萬↓36.65萬↓37.53萬↓浙江32.57萬↑31.5萬↑30.6萬↑29.1萬↓30.74萬↓31.79萬↑30.86萬↓31.3萬↓31.6萬↑重慶28.3萬↑26.4萬↑25萬↑24.7萬↓24.88萬↓25.54萬↑25.06萬↑23.5萬↑23萬↑遼寧24.4萬↑18.5萬↓20.8萬↓21.82萬↓22.51萬↓23.9萬↓25.4萬↓25.6萬↑甘肅26.31萬↑21.8萬↓27.3萬↓28.5萬↓29.6萬餘↓30.38萬↑29.7萬↑28.3萬↓29.6↓黑龍江21.1萬↑20.6萬↑16.9萬↓18.8萬↓19.7萬↓19.8萬↓20.4萬↓20.8萬↓21萬↑福建20.26萬↓20.78萬↑20萬↑18.8萬↑17.5萬↓18.93萬↓25.5萬25.5萬↑25萬↓內蒙古197901↑19.5萬↓19.8萬↓20.11萬↓18.4萬↓18.8萬↓19.3萬↑18.95萬↓新疆22.93萬↑20.7萬↑18.4萬↑16.61萬↑16.05萬↓16.26萬↑15.87萬↑15.47萬↑吉林15萬餘↑15萬↑14.3萬↓14.85萬↓13.76萬↓16.02萬↑15.9萬↓16.2萬↓寧夏60298↓7.17萬↑6.9萬6.9萬6.9萬↑6.7萬↑6.4萬↑5.87萬↓6.02萬↑海南57336↓5.9萬↑5.8萬↑5.7萬↓6.04萬↓6.2萬↑6.1萬↑5.6萬↑5.5萬↑北京49225↓5.9萬↓6.3萬↑6萬↓6.12萬↓6.8萬↓7.05萬↓7.27萬↓7.3萬↓青海46620↑44313↑4.2萬↓4.6萬↑4.5萬↑4.2萬↑3.97萬↓4.06萬↑3.8萬↓天津56258↑5.5萬5.5萬↓5.7萬↓約6萬↓6.1萬↓約6萬6.3萬↓6.4萬↓上海5萬5萬+約5.1萬5.1萬↓5.2萬↓5.3萬↓5.5萬↓西藏32973↑2.5萬↓2.8萬↑2.4萬↑2.1萬↑1.96萬↑1.89萬↓1.9萬↑

這個表的數據是統計的全國各個省市(除港澳台)之外的數據, 各個省市在出成績之後會出各自的一分一段表, 統計每一分的成績的人數, 我們以這個數據為準, 由於個人還是沒有太多精力去收集數據的,網上找到了高考100-一分一段表這個網站, 給出了各個省市的一分一段表, excel 版本, 稍微檢查了一下, 數據應該是對的,我就暫時以這個數據為準,

數據太多, 我暫時只做 35萬 以上人的省市,只有11個省市,加上 北京上海兩個城市的數據,

河南河北廣東廣西湖南湖北江西貴州安徽四川山東北京上海

其中北京上海不分科,山東是選擇一門考試進行考核, 所以 一共23個數據表,後續的話,我盡量將數據也一併上傳了

35萬人以上省市+北京上海

數據整理

上面也提到了北京上海山東的分科比較特殊, 我們就按文理一起算,每個省都是給出最高分及以上的數據, 然後給出100分及以下的數據,但是不是每個省都是100分以下,所以還要特殊考慮,

不同高考政策與分類

山東的高考政策具體不清楚, 但是似乎是考生是在6門副科中任選3門,從一圖了解山東高考改革要點這裡查到的

山東高考政策

我們就不做分科了, 直接看山東的全體成績即可。

不同統計方式

北京的人數更少,在400分以下每10分段給出人數,我們為了便於方便 默認每個分數平均人數, 比如 390-399分段的人有813人,我們認為每個分段都有81.3人,暫時這麼處理。

北京400以下10分一段

不同省市對於最高分數的表示都是最高分數及以上, 但是對於最低分數的處理就不太一樣了, 這裡不做評價比如很多省市是合併在一起 100分以下總計, 有些則只是100分的成績, 100分以下的成績是沒有給出的,這裡最後處理的時候, 我們把0分的人都刪除了, 只計算1-100 的人,反正不影響整個曲線

最低分數人數表示

最終我們整理得到數據表, 每個Sheet 表示一個省市的文理科目,然後最上面一行數據分別對應 總分,人數, 累計人數,

數據清整理

數據處理數據處理思路

這裡為了方便 順手用 Python 來做的, 使用的 pandas 讀取的 excel 文件,我們統計所有的數據的目標就是 將成績化為 0-100分那麼

\[變換後分數 = \frac{當前分數-最低分}{最高分-最低分} \times 100\]

對於每個省的成績將其調整到 [0,100], 這裡使用的是 四捨五入, 導致實際在計算過程中的數據會重疊,比如相鄰的兩個成績一個捨去,一個入上,在統一分數,導致數據雜訊較大, 這是使用 一維的中值濾波平滑一下數據就好了,

以河南文科為例, 我們直接繪製歸一化之後的成績並進行中值濾波之後對比,(圖為測試過程中歸一化到500分的圖像,不影響理解)

河南文科成績歸一化與中值平滑對比

各省市分數分佈

我們在之前已經整理得到的數據, 然後我們 就要動手做了,

# 整理數據,將各省市的成績歸一到100分之後的分佈比率# 引入 pandasimport pandas as pdimport matplotlibimport matplotlib.pyplot as pltimport scipy.signal as ss# 設定中文字體plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號# 設定圖像尺寸 與解析度plt.rcParams['figure.figsize'] = (8.0, 4.0) # 設置figure_size尺寸plt.rcParams['image.interpolation'] = 'nearest' # 設置 interpolation styleplt.rcParams['savefig.dpi'] = 300 #圖片像素plt.rcParams['figure.dpi'] = 300 #解析度# 將成績統一到 [0,] 區間MAX_SCORE = 100MIN_SCORE = 0data_file = 'Data/data.xlsx'res_file = 'Data/res-'+str(MAX_SCORE-MIN_SCORE)+'.xlsx'# 讀取excel , 獲取所有表單名字excel_info = pd.ExcelFile(data_file)all_data = {}all_data_ratio = {}# 獲取表中的每一個數據文件 並將數據歸一化到 0-500for index in range(len(excel_info.sheet_names)):# 讀取每一個表單cur_sheetname = excel_info.sheet_names[index]df_sheet = pd.read_excel(data_file, sheet_name=cur_sheetname)# 獲取每一個表中的 總分數 和對應分數的人數scores = df_sheet[df_sheet.columns.values[0]]nums = df_sheet[df_sheet.columns.values[1]]# 數據 對應 每個分數的人數 表ROWS = MAX_SCORE - MIN_SCORE + 1trans_scores_nums = [0] * ROWSrows = len(scores)cur_max_score = scores[0]cur_min_score = scores[rows - 1]cur_index = 0;for s in scores:# 計算 變換之後的分數 四捨五入trans_score = (int)(round((s - cur_min_score) / (cur_max_score - cur_min_score) * (MAX_SCORE - MIN_SCORE)))# 在計算分數的位置上 加上對應分數的人數trans_scores_nums[trans_score - 1] += nums[cur_index];cur_index += 1# 數據稍微處理一下, 做簡單的平滑處理, 去除最低分數據except0data = [0] * (ROWS - 1)for i in range(ROWS - 1):except0data[i] = trans_scores_nums[i + 1];# 中值濾波去除噪點smooth_trans = ss.medfilt(except0data, 7)# 將數據轉換成比例, 更具有一般性sum = 0smooth_trans_ratio = [0] * (ROWS - 1)for i in range(ROWS - 1):sum += smooth_trans[i]for i in range(ROWS - 1):smooth_trans_ratio[i] = smooth_trans[i] / sumall_data[cur_sheetname] = smooth_transall_data_ratio[cur_sheetname] = smooth_trans_ratioprint('正在進行 {0}/{1}, 表名:{2}'.format(index + 1, len(excel_info.sheet_names), cur_sheetname))# plt.plot(smooth_trans2)# write_data = pd.DataFrame(all_data)# write_data.to_excel(res_file,sheet_name='res')write_data_ratio = pd.DataFrame(all_data_ratio)write_data_ratio.to_excel(res_file, sheet_name='ratio')print('已經完成,存儲文件:{0}'.format(res_file))

我們在這個程序裡面主要是 將數據提取出來, 計算成 100分制之後,重新存入 excel 表中,其中人數部分換成了各省市的人數比率,也方便查閱後續的數據( 因為我感覺 plt 繪製圖像不好看,這邊使用了MATLAB 進行圖像的繪製過程)

% 將 原始數據繪製出來 並計算平均值和中值% 讀取 excel 數據獲取名稱以及各列名稱data_file = 'Data/res-100.xlsx';res_ratio = xlsread(data_file,1,'B2:X501');res_name = {'河南文科', '河南理科', '北京', '上海','河北文科','河北理科','山東','廣東文科''廣東理科''湖北文科','湖北理科','湖南文科','湖南理科','四川文科','四川理科','安徽文科','安徽理科','廣西文科','廣西理科','貴州文科','貴州理科','江西文科','江西理科'};figure()hold on[rows,cols] = size(res_ratio);avg = zeros(cols,1);media =zeros(cols,1);for i=1:cols% 繪製百分比率圖plot(res_ratio(:,i)*100);% 計算平均值中值media_l = 0.5;media_find_flg = 0;for j = 1:rowsavg(i) = avg(i) + j*res_ratio(j,i);% 統計比率超過一半的 數之後就是中值 找到后就不更新了if(media_find_flg ==0)if(media_l >0)media_l = media_l - res_ratio(j,i);elsemedia(i) = j;media_find_flg = 1;endendendendlegend(res_name);% 創建 xlabelxlabel({'歸一化到100分后成績'});% 創建 titletitle({'各省市歸一化成績分佈比率'});% 創建 ylabelylabel({'單位成績分佈比率'});

最終我們得到了這樣的一副圖, 細節部分比較多,且數據雜訊較大,但是數據的整體趨勢大概明白了,雜訊較大的黃色的線是北京的,暫時不做過多分析

各省市成績分佈比率

各省市分數平均值與中值

我們這裡的計算平均值就是 每分段人數乘以該分段的比例,最終得到的結果,然後, 中值這裡簡單除暴, 找到中間比率所在的區間就好了, 代碼沒有去過多處理, 能跑出來結果就好

****平均數中數眾數河南文科49.487922335046河南理科54.582928135865北京68.047921257070上海57.565371976062河北文科51.231093825237河北理科58.009186186166山東53.141765295660廣東文科47.71856534952廣東理科48.647079155155湖北文科48.509528654937湖北理科51.90930885564湖南文科60.260810266272湖南理科59.096329196265四川文科54.822154275759四川理科61.596987716460安徽文科51.958294865569安徽理科54.626905065756廣西文科37.847996563731廣西理科41.465582844133貴州文科63.485164066564貴州理科57.965843465856江西文科53.357401845571江西理科56.859825916162數據簡單分析

我們在上一章節給出了一張圖, matlab繪製的圖的顏色比較接近, 建議下載原圖觀看,給出了分布圖,我們把數據最為特殊的幾條線單獨繪製一下,

最偏右的黃色北京最偏左的紫色廣西文科最高的 淺藍色貴州文科最平均的淺紫色湖北理科雙峰的藍色 江西文科

明顯數據分析

其實這些形態是有獨特的意義的,理論上的曲線是正太分佈的,但是由於各種原因,我們以實際曲線為主,

靠右表示 數據整體偏大靠左整體偏小最高的表示數據比較集中,最低的表示數據分佈均勻雙峰的表示數據割裂嚴重(我瞎編的)。。。

就總體而言, 各個省市的成績的峰值(眾數)也主頁也分為兩個部分,部分省市的峰值在40分左右,主要包括河南文科,河北文科,湖北文科,廣西文科,廣西理科剩下的分數的眾數都集中在60分多一點的位置,

emmm, 就這麼多了, 再多的分析也沒有太多用, 畢竟北京NB

剩下的部分就是 高考本科上線率這種數據了, 但是各省對於本科的分數線真是不同

本科分數線

我給出的數據是我在各地高考歷年分數線(批次線) 這個網頁上能看到2020 年各省高考批次線, 一般的省市都是劃分 1本2本專科, 除了北京,上海,河北,山東,廣東後面想辦法再做吧, 估計會不做了

高考大省與高考小省

我們拿高考大省河南河北然後對比上海和北京, 看下數據其實這裡應該去找數據軸上的最明顯特徵的線, 具體數據自己分析好了

但是我們暫時只看這幾個數據,

四省市數據對比

****平均數中數眾數河南文科49.487922335046河南理科54.582928135865北京68.047921257070上海57.565371976062河北文科51.231093825237河北理科58.009186186166

都是前面給出的數據, 我們繪製出來了

四省市對比

北京的成績是明顯優於河北的,河南和上海的數據其實是一直的,即使是在全部曲線圖上也算比較中間的類型了,

總結

搞了半天, 屁用沒有,就是手癢然後就搞了一大堆, 越搞越多, 後續還有一堆要做的,

根據本篇數據而言, 北京的成績是比全國各個省市的成績要好的,可能與培養方式不同吧,

其實這種分數分佈並不一定是培養造成的, 還有部分是各省考試情況不同導致的,所以數據僅供參考, 北京NB

備註

我將所有的數據都存在了 Github 上

https://github.com/SChen1024/GaoKao

有興趣的可隨便拿數據進行分析, 後續還會做完最後一點

免責聲明:非本網註明原創的信息,皆為程序自動獲取互聯網,目的在於傳遞更多信息,並不代表本網贊同其觀點和對其真實性負責;如此頁面有侵犯到您的權益,請給站長發送郵件,並提供相關證明(版權證明、身份證正反面、侵權鏈接),站長將在收到郵件12小時內刪除。

相關閱讀