设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 4513|回复: 0
打印 上一主题 下一主题

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

[复制链接]

169

主题

1

好友

733

积分

版主

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2018-6-15 01:25:11 |只看该作者 |倒序浏览

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

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

最直接反映高考难度的,自然是录取率。因为难易是相对的,就算试卷很难,但大家都有学上,那也算不上难考。
数据来源:新东方在线 http://news.koolearn.com/20180606/1152629.html
代码:
  1. import numpy as np
  2. from pyecharts import Bar, Line, Overlap
  3. data = [[2017, 940, 700, 74.46],
  4. [2016, 940, 705, 75],
  5. [2015, 942, 700, 74.3],
  6. ...
  7. [1977, 570, 27, 5]]
  8. arr = np.array(data)
  9. bar = Bar()
  10. bar.add("报考人数",arr[::-1,0] , arr[::-1,1])
  11. bar.add("录取人数",arr[::-1,0] , arr[::-1,2])
  12. line = Line()
  13. line.add("录取率",arr[::-1,0] , arr[::-1,3]*10, line_width=3, line_color='green')
  14. ol = Overlap("历年报考人数与录取率")
  15. ol.add(bar)
  16. ol.add(line)
  17. ol.render()
复制代码
这是自1977年恢复高考以来到2017年的高考报考及录取数据。篇幅所限,省略了部分数据。为了直观展示,对录取率做了尺度上的变换。2000年以后,最难(录取率最低)的一年高考是2007年,录取率只有56%,但这也已经比上世纪八九十年代只有百分之二三十的录取率高得多。总体来说,上大学的确是越来越容易了。而数据上看,03年也没有想象中那么糟糕。

从图上可以看出,每年的报考人数也有不小的波动。我去找了历年的人口统计数据,与报考人数做了个对比:
数据来源:国家统计局年度数据 http://data.stats.gov.cn/easyquery.htm?cn=C01
代码:
  1. data_born = [[124761, 123626, 122389, ..., 65994],
  2.              [14.64, 15.64, 16.57, ..., 24.78]]
  3. arr_born = np.array(data_born)
  4. list_born = list((arr_born[0]*arr_born[1]/1000)[::-1])
  5. bar = Bar("历年报考人数与出生人数")
  6. bar.add("报考人数",arr[::-1,0] , arr[::-1,1])
  7. bar.add("出生人数",arr[::-1,0] , list_born)
  8. bar.render()
复制代码
由于没有完整的年出生人数数据,我用了1959~1999 前一年末总人口数 x 当年出生率来替代出生人数,然后与18年后的高考报名人数作比较。可以看出两点:
高考人口与出生人数有一定的相关性适龄人口的高考率逐渐提高
教育普及率相比较二三十年前大有提高,加之人口增长放缓,越来越多的人可以接受更高程度的教育。不过从比例上可以推断出,上大学仍然不是件人人可以享受得到的事情。

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

首先看下2018年各省的报名情况:
数据来源:中国教育在线 http://gaokao.eol.cn/gkbm/
代码:
  1. from pyecharts import Map  
  2. data_prov = [('北京', 6.3), ('重庆', 25), ('上海', 5), ..., ('西藏', 2.53)]  
  3. geo = Map("2018各省高考报名人数")
  4. attr, value = geo.cast(data_prov)
  5. geo.add('', attr, value, visual_range=[0, 80], is_visualmap=True, is_map_symbol_show=False)  
  6. geo.render()
复制代码
报名人数最多的是河南省98.38万人,广东省75.8万人次之,重庆作为直辖市也有25万人。人数较少的地区:北京6.3万、上海约5万、天津5.5万、青海约4万, 西藏2.53万

报名人数与当地本身的人口总量有关,有多有少很正常,关键还是看录取率。下面是2017年各省的一本录取率:
数据来源:新东方在线 http://gaokao.koolearn.com/20170728/1119910.html
代码:
  1. data_prov_ad = [('湖南', 11.2), ('江西', 10.4), ('安徽', 14.2), ..., ('浙江', 14)]
  2. geo = Map("2017各省一本录取率")
  3. attr, value = geo.cast(data_prov_ad)
  4. geo.add("", attr, value, visual_range=[8, 20], is_visualmap=True, is_map_symbol_show=False)
  5. geo.render()
复制代码
最难的三个地区:河南7.8%,广西8.44%,山西9.8%录取率最高的三个地区:北京30.5%,天津24.1%,上海21.8%(缺海南数据)

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

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



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

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



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

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

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

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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 10:10 , Processed in 0.029853 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部