Python在学生成绩分析中的应用
2021-06-16王亚丽岳雷
王亚丽 岳雷
(1.太原旅游职业学院 山西省太原市 030032 2.太原师范学院附属中学 山西省太原市 030001)
Python 语言具有简单易学、拥有丰富的第三方库等特点,使得Python 在网络爬虫、机器学习、网站开发、数据分析等方面应用非常广泛。而且它免费开源,使得很多用户都开始使用并推广。本文使用Python 对学生成绩进行了导入、数据的清洗、数据的统计分析同时进行了可视化分析。
1 问题描述
本文以统计分析各个班学生成绩为案例,统计分析得出:
(1)某个学生各门科目的班排名和校排名;
(2)各个班每个分数段的人数占比情况和全校各分数段人数占比情况;
(3)某学生的成绩纵向分析;
(4)基础课成绩和总分之间的相关性分析。以Excel 文档作为数据源进行数据读取。
2 数据的导入
本案例是基于表1 score.xls 进行分析的,因此就需要在pycharm 中将Excel 中的收据导入进来。数据导入使用pandas 中的read_excel()读取数据即可。代码如下:
3 数据预处理
Python 的第三方库pandas 库拥有强大的数据清理功能,可以对导入的缺失数据进行高效填补和替换,对异常数据进行查询、删除[1]等。本文首先对导入的数据进行初步判断,使用pandas.shape查看数据的形状,一共有15083 行,15 列数据。
通过data.isnull().any()显示哪些列存在缺失值,运行结果显示语文、物理列有缺失值,然后使用data.fillna(0)将缺失值填充为0。
查看数据框中各列中的数据类型是否是int,若不是则需要处理。对于数据类型不一致的列抛出列名,以便进行下一步处理。代码如下:
运行结果显示准考证号、姓名、年级、科类、语文、数学、物理、考试时间等列不是int 格式,其中准考证号、姓名、年级、科类、考试方式列不需要做处理,使用astype()函数将其他列转换为int 类型,运行结果会发现数学列有休学的,语文列有缺考的,物理列有作弊的。
使用replace()函数将作弊、缺考、休学的成绩清0。代码如下:
将考试时间18.10月、18.11月、…、2020.12月依次替换为数字(0,1,…,18),使用的语句如下:
4 数据分析
在完成了数据的清洗后,就可以使用python 中第三方库的各种统计函数对学生成绩进行统计分析了。其中Pandas 库中提供了很多比如标准差、方差、分组分析、对比分析等函数,对于数据分析处理非常高效且便捷。
表1:学生成绩表score.xls 的数据结构
表2:各个班以及全校的总分分数段人数占比情况
图1:各个班各总分分数段人数占比
图2:全校各总分分数段占比
图3:樊佳玥同学历次的语文成绩
图4:基础课和总分之间的关系
(1)使用groupby()函数和rank()函数计算某个学生各门科目的班排名和校排名
data2['语文班排名']=data2.groupby(['班级','考试时间'])['语文'].rank(ascending=False,method='dense')
data2['语文校排名']=data2.groupby(['考试时间'])['语文'].rank(ascending=False,method='dense')
类似的方法可以计算某个学生的总分班排名和校排名,代码如下:
(2)如表2 所示,利用pandas 中的cut()、pivot_table()方法计算各个班的总分进行分段划分和各分段人数情况统计,再使用div()方法可计算出各个班每个分数段的人数占比情况,同时用计算总分的方法可以计算全校各分段人数统计和全校各分段人数占比情况,核心代码如下:
(3)某学生的成绩纵向分析:(以樊佳玥同学的语文成绩为例)
首先从10000 多条数据中将樊佳玥同学的成绩抽取出来,抽取出来之后再以考试时间为横坐标,画出该同学的折线图。抽取代码为:data2[data2['准考证号']==220109038]
(4)采用corr()计算每门课程的成绩与总分的关联度,最后采用热力图进行展示。
5 数据可视化
对数据进行统计分析后,为了使分析结果更加直观,本文采用了matplotlib 库和seaborn 库中的方法进行了可视化展示。核心代码如下:
#基础课成绩与总分之间的相关性
sn.heatmap(data2.loc[:,['语文','数学','英语','物理','生物','化学','历史','地理','政治','总分']].corr())
6 结果分析
本文以某高中学生的成绩为例,得到各个班总分分数段人数占比情况和整个学校的各分数段人数占比情况,通过各班分数的横向对比,学校的教辅人员可以很好的了解班之间的差别和各班的优势;还得到某学生某门科目的纵向成绩比较,发现该同学的成绩趋于稳定;最后分析了基础课和总分之间的相关性,颜色越浅表示相关性越强,可以看到总分与生物、英语、政治、历史的相关性更强一些,这样为学校的决策者提供了有力的数据支撑。
7 结束语
综上所述,Python 语言语法简单、免费开源且拥有强大的类库,使用Python 进行数据分析操作简单、便捷和高效。本文使用Python 语言对学生成绩进行了若干分析,为相关教育工作者进行成绩处理提供了思路。关于Python 在其他数据分析方面的应用,还需要我们不断的实践和探索。