[数据可视化]哪年高考最难?哪里高考最难?

[数据可视化]哪年高考最难?哪里高考最难?

一年一度的高考又到来了。虽然对于大多数人来说,高考已经是过去的事情了。但每年到了这个时候,又难免再次想起那种被支配的恐惧😂。譬如03年的江苏数学卷,十多年过去了仍不断被人提起。作为当时的亲历者之一,我不禁想知道:到底我们是不是最难的一届呢?

于是我去找了下历年的高考数据,并使用 pyechats 库做了一点简单的可视化处理:

最直接反映高考难度的,自然是录取率。因为难易是相对的,就算试卷很难,但大家都有学上,那也算不上难考。

数据来源:新东方在线 http://news.koolearn.com/20180606/1152629.html

代码:

import numpy as np
from pyecharts import Bar, Line, Overlap

data = [[2017, 940, 700, 74.46],
[2016, 940, 705, 75],
[2015, 942, 700, 74.3],
...
[1977, 570, 27, 5]]

arr = np.array(data)
bar = Bar()
bar.add("报考人数",arr[::-1,0] , arr[::-1,1])
bar.add("录取人数",arr[::-1,0] , arr[::-1,2])
line = Line()
line.add("录取率",arr[::-1,0] , arr[::-1,3]*10, line_width=3, line_color='green')
ol = Overlap("历年报考人数与录取率")
ol.add(bar)
ol.add(line)
ol.render()

这是自1977年恢复高考以来到2017年的高考报考及录取数据。篇幅所限,省略了部分数据。为了直观展示,对录取率做了尺度上的变换。2000年以后,最难(录取率最低)的一年高考是2007年,录取率只有56%,但这也已经比上世纪八九十年代只有百分之二三十的录取率高得多。总体来说,上大学的确是越来越容易了。而数据上看,03年也没有想象中那么糟糕。

从图上可以看出,每年的报考人数也有不小的波动。我去找了历年的人口统计数据,与报考人数做了个对比:

数据来源:国家统计局年度数据 http://data.stats.gov.cn/easyquery.htm?cn=C01

代码:

data_born = [[124761, 123626, 122389, ..., 65994], 
             [14.64, 15.64, 16.57, ..., 24.78]]
arr_born = np.array(data_born)
list_born = list((arr_born[0]*arr_born[1]/1000)[::-1])
bar = Bar("历年报考人数与出生人数")
bar.add("报考人数",arr[::-1,0] , arr[::-1,1])
bar.add("出生人数",arr[::-1,0] , list_born)
bar.render()

由于没有完整的年出生人数数据,我用了1959~1999 前一年末总人口数 x 当年出生率来替代出生人数,然后与18年后的高考报名人数作比较。可以看出两点:

  1. 高考人口与出生人数有一定的相关性
  2. 适龄人口的高考率逐渐提高

教育普及率相比较二三十年前大有提高,加之人口增长放缓,越来越多的人可以接受更高程度的教育。不过从比例上可以推断出,上大学仍然不是件人人可以享受得到的事情。

看了时间上的分布,那么地域上呢?相较整体的录取率,人们争议更多的还是不同地区高考之前的差异。

首先看下2018年各省的报名情况:

数据来源:中国教育在线 http://gaokao.eol.cn/gkbm/

代码:

from pyecharts import Map  

data_prov = [('北京', 6.3), ('重庆', 25), ('上海', 5), ..., ('西藏', 2.53)]  
geo = Map("2018各省高考报名人数")
attr, value = geo.cast(data_prov)
geo.add('', attr, value, visual_range=[0, 80], is_visualmap=True, is_map_symbol_show=False)  
geo.render()

报名人数最多的是河南省98.38万人,广东省75.8万人次之,重庆作为直辖市也有25万人。人数较少的地区:北京6.3万、上海约5万、天津5.5万、青海约4万, 西藏2.53万

报名人数与当地本身的人口总量有关,有多有少很正常,关键还是看录取率。下面是2017年各省的一本录取率:

数据来源:新东方在线 http://gaokao.koolearn.com/20170728/1119910.html

代码:

data_prov_ad = [('湖南', 11.2), ('江西', 10.4), ('安徽', 14.2), ..., ('浙江', 14)]
geo = Map("2017各省一本录取率")
attr, value = geo.cast(data_prov_ad)
geo.add("", attr, value, visual_range=[8, 20], is_visualmap=True, is_map_symbol_show=False)
geo.render()

最难的三个地区:河南7.8%,广西8.44%,山西9.8%
录取率最高的三个地区:北京30.5%,天津24.1%,上海21.8%
(缺海南数据)

而江苏去年的12.1%还排不进top10。

讲真,看了这数据还是挺心疼河南的小伙伴们,论人数远高于其他地区,论录取率又远低于。难怪周围的河南同学都是学霸。


教育是件极为重要的事,也是件极为复杂的事。我在这里仅仅是展示一些看得到的客观数据,很难得出更深的结论。我希望今天参加高考的每位考生都可以考上理想的学校,但在教育资源小于受教育需求的前提下,这个愿望显然不可能每个人都实现。所以,能有幸接受到好教育的机会值得珍惜,而因种种原因没能如愿的人,人生还很长,还有千万种可能。

从个人角度来看,不要执着于绝对的公平;但从整个社会来看,我们应该让每个人拥有更加公平的机会。相信在不久之后,报名数和录取数的曲线会越来越近,录取率分布图上的颜色也越来越趋向一致。


本文中使用到的完整数据和代码,可在公众号(Crossin的编程教室)里获取,回复关键字 高考

════
其他文章及回答:

如何自学Python | 新手引导 | 精选Python问答 | Python单词表 | 区块链 | 人工智能 | 双11 | 嘻哈 | 爬虫 | 排序算法 | 我用Python

欢迎搜索及关注:Crossin的编程教室

编辑于 2018-06-07

文章被以下专栏收录

    本专栏旨在为编程初学者提供浅显易懂的入门科普。微信公众号:Crossin的编程教室(crossincode),内有面向零基础学习者的 Python 入门教程。代码问题可上 bbs.crossincode.com 发帖提问。