四六级成绩的可视化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaohaibo_/article/details/79489305

拿到了教务处下发的全校四六级成绩单.xlsx,大呼这简直就是一个不能再好的练习用数据集啊。。

part1 用excel进行数据整理

把四级和六级成绩分开,删除一些没用的列,留下一些有用的列,其实可以用excel做得更多,但笔记本电脑并不能满足excel的硬件需求,还需转换python
这里写图片描述

part2 用python进行数据分析
step1 数据预处理
import pandas as pd
import os
os.chdir('/Users/zhaohaibo/Desktop')
#-----------------录入数据
data = pd.read_csv('grade4.csv',encoding = 'utf-8')
#----------------提取出有分析价值的内容
dt4_1 = data[['学历','年级','院系','笔试成绩总分']]
dt4_1.columns = ['edu','grade','col','score']
#----------------数据清洗,删除缺考的数据
dt4_2 = dt4_1[(True-dt4_1['score'].isin([0]))]
step2 统计量分析
#仅对入学年份与成绩进行统计量分析
des4_1 = dt4_2.describe()
des4_1.loc['range'] = des4_1.loc['max'] - des4_1.loc['min'] #级差
des4_1.loc['var'] = des4_1.loc['std']/des4_1.loc['mean'] #异变系数
des4_1.loc['dis']=des4_1.loc['75%']-des4_1.loc['25%']#四分位数间距

这里写图片描述

看到平均分。。最高分竟也仅560,去年是有几个600+的吧。

step3 统计

因为这次仅仅想对分数段及人数做个分析,需要统计的量很少。以后有时间还想分析一下分数与学院、专业的相关性,看看哪个院的成绩最好。

dt4_3 = dt4_2[dt4_2['score'] >= 425]
dt4_4 = dt4_2(dt4_2['score'] >= 501) & (dt4_2['score'] <= 550)] 
dt4_5 = data[(data['笔试成绩总分'] >= 460) &(data['学历']=='研究生')]
#....不一一列举了
part3 数据可视化

选用的是基于javascript的ECharts
echarts相关使用方法官网已经说明的足够详细了。
这里上一下六级成绩的绘图代码,参考的是官网的一个饼图模版。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <!-- 这里是加载刚下好的echarts.min.js,注意路径 -->
    <script src="echarts.js"></script>

    
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 1000px;height:600px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        // 第二个参数可以指定前面引入的主题
        var chart = echarts.init(document.getElementById('main'), 'vintage');

        var option = {
    title : {
        text: '',
        subtext: '',
        x:'center'
    },
    tooltip: {
        trigger: 'item',
        formatter: "{a} <br/>{b}: {c} ({d}%)"
    },
    legend: {
        orient: 'vertical',
        x: 'left',
        data:['551及以上','501~550','476~500','426~475','376~425','326~375','325及以下']
    },
    series: [
        {
            name:'asdas',
            type:'pie',
            selectedMode: 'single',
            radius: [0, '50%'],

            label: {
                normal: {
                    position: 'inner'
                }
            },
            labelLine: {
                normal: {
                    show: false
                }
            },
            data:[
                {value:497, name:'缺考(497)'},
                {value:6947, name:'未通过(6947)'},
                {value:924, name:'通过(924)', selected:true}
            ]
        },
        {
            name:'分数段',
            type:'pie',
            radius: ['60%', '80%'],
            label: {
                normal: {
                    formatter: '{a|{a}}{abg|}\n{hr|}\n  {b|{b}:}{c}  {per|{d}%}  ',
                    backgroundColor: '#eee',
                    borderColor: '#aaa',
                    borderWidth: 1,
                    borderRadius: 10,
                    // shadowBlur:3,
                    // shadowOffsetX: 2,
                    // shadowOffsetY: 2,
                    // shadowColor: '#999',
                    // padding: [0, 7],
                    rich: {
                        a: {
                            color: '#999',
                            lineHeight: 15,
                            align: 'center'
                        },
                        // abg: {
                        //     backgroundColor: '#333',
                        //     width: '100%',
                        //     align: 'right',
                        //     height: 22,
                        //     borderRadius: [4, 4, 0, 0]
                        // },
                        hr: {
                            borderColor: '#aaa',
                            width: '100%',
                            borderWidth: 0.5,
                            height: 0
                        },
                        b: {
                            fontSize: 10,
                            lineHeight: 20
                        },
                        per: {
                            color: '#eee',
                            backgroundColor: '#334455',
                            padding: [2, 4],
                            borderRadius: 2
                        }
                    }
                }
            },
            data:[
                {value:73, name:'551及以上'},
                {value:61, name:'501~550'},
                {value:114, name:'476~500'},
                {value:717, name:'426~475'},
                {value:1990, name:'376~425'},
                {value:2780, name:'326~375'},
                {value:2197, name:'325及以下'}
            ]
        }
    ]
};

        // 使用刚指定的配置项和数据显示图表。
        chart.setOption(option);

    </script>
</body>
</html>

四级成绩分析结果:

4

六级成绩分析结果:

6

又看了下六级多少人考的比我高

这里写图片描述

猜你喜欢

转载自blog.csdn.net/zhaohaibo_/article/details/79489305