高考哪年最难?众说纷纭不如用Python分析出哪一年最难

2020年高考已经落下帷幕了,各省高考成绩较前几年有较大幅度上涨,部分省份甚至700分都无缘“清北”,看的小编一头冷汗,庆幸生对了年代。

网络上关于哪年高考难度最大的争议从未中断:
在这里插入图片描述

于是我决定用python对2010年至2020年的高考数据进行分析,多角度分析得出全国卷最难的年份。

以某高考大省理科成绩为例,我从网络上爬取了从2010年至2020年之间的理科成绩数据,存入csv文件中待用

在这里插入图片描述

下面从3个角度进行分析

角度1:一本线排名

用pyecharts画出历年一本线柱状图:
在这里插入图片描述

从图中可以看出,2011年一本线为最高582分,2017年为最低484分。

一本线的高低在一定程度上能够映出当年高考的难度,但受招生人数、报考人数等因素影响,单单从这一角度考虑不够充分。

代码:

bar = (
Bar()
.add_xaxis(list(range(2010,2021)))
.add_yaxis(series_name=“历年一本线排名”, yaxis_data=eve_scores_line, yaxis_index=0, color=colors[0])
.set_series_opts(
label_opts=opts.LabelOpts(is_show=True),
markline_opts=opts.MarkLineOpts(
data=[
opts.MarkLineItem(type_=“min”, name=“最小值”),
opts.MarkLineItem(type_=“max”, name=“最大值”),
opts.MarkLineItem(type_=“average”, name=“平均值”),
]
),
colors=Faker.rand_color()
)
.set_global_opts(
xaxis_opts=opts.AxisOpts(name=“年份”,axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(color=colors[1]))),
yaxis_opts=opts.AxisOpts(
name=“分数”,
type_=“value”,
min_=400,
max_=600,
position=“left”,
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(color=colors[2])
),
axislabel_opts=opts.LabelOpts(formatter="{value}"),
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True),
),
tooltip_opts=opts.TooltipOpts(trigger=“axis”, axis_pointer_type=“cross”),
)
.render(“每年一本线.html”)

分析角度2:各分数段人数占比

统计每年各分数段人数占比,画出时间轴饼状图,如下图:

貌似不够直观

我们再来统计一下历年600至700分人数占比情况,并画出折线图:
在这里插入图片描述

从图中可以看出,600分至700分的人数,2020年占比最高,达9.71%;2013年占比最低,为0.71%,差距高达10余倍。

代码如下:

for i in range(2010,2021):    
a=data[data['年份'].eq(i)]    
a=a[a['成绩'].ge(200)]    
a = a[a['成绩'].le(700)]    
sum_students = max(list(a['排名']))    
dict={'200-300':0, '300-400':0, '400-500':0, '500-600':0, '600-700':0}    
for j in range(200,700,100):        
stmp = a[a['成绩'].ge(j)]        
stmp = stmp[stmp['成绩'].le(j+100)]        
renshu=int(list(stmp['排名'])[-1])-int(list(stmp['排名'])[0])        
dict['{0}-{1}'.format(j,j+100)]=round(float(renshu/sum_students)*100,2)    
data_eve_years.append(dict)attr = Faker.choose()tl = Timeline()
for i,j in zip(range(2010, 2021),data_eve_years):    
pie = (        Pie()        .add(            "",            
[list(z) for z in zip(list(j.keys()), [j[k] for k in list(j.keys())])],            
rosetype="radius",            
radius=["30%", "55%"],        )        .set_global_opts(title_opts=opts.TitleOpts("{}年各分数段人数占比".format(i)))        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}%"))    )    
tl.add(pie, "{}年".format(i))tl.render("timeline_pie.html")c = (    Line()        
.add_xaxis(xaxis_data=['{0}年'.format(i) for i in list(range(2010, 2021))])        
.add_yaxis(        series_name="历年600-700分人数占比情况",        
y_axis=[i['600-700'] for i in data_eve_years])        
.set_global_opts(            xaxis_opts=opts.AxisOpts(name="年份",axisline_opts=opts.AxisLineOpts(                    linestyle_opts=opts.LineStyleOpts(color='r'))),            
yaxis_opts=opts.AxisOpts(                name="占比",                type_="value",                position="left",                axislabel_opts=opts.LabelOpts(formatter="{value}%"),                
axistick_opts=opts.AxisTickOpts(is_show=True),                
splitline_opts=opts.SplitLineOpts(is_show=True),            ),                
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),    )    
.render("600-700占比折线图.html"))

分析角度3:平均分排名

从前开始,对前1、2、3、4万名的成绩求平均分,画出折线图:
在这里插入图片描述

从折线图可以看出,2013年平均分最低。
代码:

c = (
    Line()
    .add_xaxis(xaxis_data=['{0}年'.format(i) for i in list(range(2010,2021))])
    .add_yaxis(
        series_name="前1万名",
        y_axis=result[0],
    )
    .add_yaxis(
        series_name="前2万名",
        y_axis=result[1],
    )
    .add_yaxis(
        series_name="前3万名",
        y_axis=result[2],
    )
    .add_yaxis(
        series_name="前4万名",
        y_axis=result[3],
    )
    .set_global_opts(
            xaxis_opts=opts.AxisOpts(name="年份",axisline_opts=opts.AxisLineOpts(
                    linestyle_opts=opts.LineStyleOpts(color='r'))),
            yaxis_opts=opts.AxisOpts(
                name="分数",
                type_="value",
                min_=500,
                max_=700,
                position="left",
                axislabel_opts=opts.LabelOpts(formatter="{value}"),
                axistick_opts=opts.AxisTickOpts(is_show=True),
                splitline_opts=opts.SplitLineOpts(is_show=True),
            ),
                tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
    )
    .render("折线图.html")
)

从折线图可以看出,2013年平均分最低。

代码:


c = (
    Line()
    .add_xaxis(xaxis_data=['{0}年'.format(i) for i in list(range(2010,2021))])
    .add_yaxis(
        series_name="前1万名",
        y_axis=result[0],
    )
    .add_yaxis(
        series_name="前2万名",
        y_axis=result[1],
    )
    .add_yaxis(
        series_name="前3万名",
        y_axis=result[2],
    )
    .add_yaxis(
        series_name="前4万名",
        y_axis=result[3],
    )
    .set_global_opts(
            xaxis_opts=opts.AxisOpts(name="年份",axisline_opts=opts.AxisLineOpts(
                    linestyle_opts=opts.LineStyleOpts(color='r'))),
            yaxis_opts=opts.AxisOpts(
                name="分数",
                type_="value",
                min_=500,
                max_=700,
                position="left",
                axislabel_opts=opts.LabelOpts(formatter="{value}"),
                axistick_opts=opts.AxisTickOpts(is_show=True),
                splitline_opts=opts.SplitLineOpts(is_show=True),
            ),
                tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
    )
    .render("折线图.html")
)

综上所述,2013年全国卷高考应该是最难的。
源码及表格数据由于篇幅限制,没放在文内。有兴趣的朋友需要的话,请回复“高考”获取。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值