2021年高考已經落下帷幕了,各省高考成績較前幾年有較大幅度上漲,部分省份甚至700分都無緣「清北」,看的小編一頭冷汗,慶幸生對了年代。於是我決定用python對2010年至2020年的高考數據進行分析,多角度分析得出全國卷最難的年份。以某高考大省理科成績為例,我從網絡上爬取了從2010年至2020年之間的理科成績數據,存入csv文件中待用從圖中可以看出,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") )統計每年各分數段人數占比,畫出時間軸餅狀圖,如下圖:我們再來統計一下歷年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"))從前開始,對前1、2、3、4萬名的成績求平均分,畫出折線圖: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) 人氣()