基于Pandas和Pandas-Bokeh的学生成绩数据统计及可视化

2021-11-14 13:17时红军
中国信息技术教育 2021年21期
关键词:可视化

时红军

摘要:本文以作者所在学校初一初二两个年级学生的期末考试成绩为例,详细阐述了如何利用数据分析工具Pandas对数据进行导入、清洗、分析,以及使用第三方绘图库Python-Bokeh对统计结果进行可视化输出的方法,希望它能够在学生成绩统计应用中具有较好的实用性和推广价值。

关键词:Pandas;Bokeh;可视化;成绩统计

中图分类号:G434  文献标识码:A  论文编号:1674-2117(2021)21-0086-05

引言

近年来,因为具有简单易学、易读易维护以及超强的可扩展性等优点,Python语言逐渐成为数据分析领域的首选工具。Pandas作为强大的Python数据分析支持库,为Python提供了高性能、易使用的数据结构和高效操作数据所需的工具,它可以方便地从csv、xlsx、txt等格式的文件中导入数据,然后进行数据的清洗、筛选、排序、分组、导出等处理。Pandas-Bokeh是Python的一款交互式数据可视化库,可以将Pandas中的数据帧DataFrame输出至浏览器并实现与用户的交互。本文尝试使用Pandas+Pandas-Bokeh对笔者所在学校初一初二学生某次期末考试的成绩进行统计分析,并实现可视化输出。

数据导入

Pandas中数据导入函数有很多,其中函数read_csv()可以导入csv和txt文件,函数read_excel()可导入xlsx文件。笔者使用read_excel()从Excel文件中导入学生成绩,参数nrows可以设置导入的行数,实现数据的预导入,用来查看数据是否存在编码、格式等问题以及选择需要导入的列,使用参数usecols导入指定列,参数header指定第几行作为列索引。代码如图1所示,正确运行结果如表1所示。

数据清洗

因为采集得到的数据可能存在如数据缺失、重复、极端值、格式不统一等问题,所以在数据分析之前,必须对数据进行预处理,即数据清洗。Pandas中专门提供了许多用于数据清洗的函数与方法,如函数fillna()可以将缺失数据用提供的参数填充,函数dropna()可以按行删除缺失数据,drop_duplicated()函数用于删除重复行。在清洗数据之前,可用info()函数查看数据信息,代码如图2所示,运行结果如图3、图4所示。

从图3和图4可以看出,该数据帧中有289行7列数据,其中语文和英语两列都有缺失值,没有重复值。对于缺失值用函数fillna(value=0)将缺失值用0填充,代码为student_list.fillna(value=0),运行结果如表2所示。

数据分析

完成数据清洗后,就可以利用Pandas提供的统计函数进行数据分析。在学生成绩分析统计中,通常需要按年级、班级、学科等分组分别统计相关指标。Pandas中的groupby()函数可以对数据帧进行分组,然后可以对每个组独立应用聚合函数,最后将每个分组的计算结果合并。

1.均分、最高分、最低分、优秀率、及格率等

首先分别按年级、学科分组,在每个组中同时使用多个不同的聚合函数来分别统计不同的指标量。如mean、max、min函数分别用来计算均分、最高分和最低分。优秀和及格人数的计算使用了匿名函数lambda表达式,核心代码如图5所示,运行结果如表3所示。

2.各分数段人数分析

Pandas中的cut函数可以将连续型数值进行离散化处理,它把Series中每个数据放入一个分箱,并可以打上标签。首先根据年级最高分和最低分创建分箱所需的分组依据bins,然后利用cut函数将得分分箱,最后统计每个分箱内数据个数即分数段内人数,核心代码如图6所示,运行结果如表4所示。

3.年级优生人数分析

如果需要查看学科成绩排名靠前的学生信息,可使用Pandas提供的nlargest函数。它将数据帧或数据系列中的前n大数据取出,参数keep用来设置重复值的取舍方法,默认为first,表示按索引顺序取首次出现的数据。代码如图7所示,运行结果如表5所示。

数据可视化

数据可视化是借助图形化手段,将数据转换成可视化图表,它可以清晰地将隐藏在数据间的信息直观地展现在用户面前。相比传统的表格或文档展现方式,它提供了另一个维度来观察数据,从而可以对数据进行更加深入的观察和分析。常用的Python的可视化库主要有Matplotlib、Seaborn、Bokeh等,Bokeh是基于JavaScript的可实现交互式可视化的绘图工具库,它可以在Web浏览器中实現美观的视觉效果,并能将数据输出为JSON对象、HTML文档或交互式Web应用程序。Pandas-Bokeh与Pandas能够无缝衔接,Pandas中的DataFrame和Series可直接调用Bokeh底层代码,并以图表形式展现出来。其语法简单,简洁易用,所以笔者尝试利用Pandas-Bokeh对学生成绩进行可视化处理。

①均分、最高分等折线图。Pandas-Bokeh支持的图表主要有折线图line、条形图bar、散点图scatter、直方图histogram等,使用方法有两种(df表示数据帧,以折线图为例):df.plot_bokeh.line(…)和df.plot_bokeh (kind='line',…)。输出结果可以用pandas_bokeh.output_notebook()命令在Jupyter notebook中直接展示,也可以使用pandas_bokeh.output_file("*.html")输出为HTML文件。

首先导入pandas_bokeh库,设置输出方式为在Jupyter notebook展示,然后即可利用数据分析过程中的数据帧调用plot_bokeh绘图函数生成对应图表,代码如图8所示,运行结果如图9所示。

②分数段百分比堆叠柱形图的代码如图10所示,运行结果如图11所示。

③分数频数分布直方图的代码如下页图12所示,运行结果如下页图13所示。

(4)前10名学生条形图的代码如下页图14所示,运行结果如下页图15所示。

总结

本文利用Pandas对学生成绩进行了导入、清洗、分析等处理,然后用Pandas-Bokeh对分析结果可视化,输出了清晰直观的统计图表。此方法简单易用,可极大减轻每次考试后学校数据统计人员的重复性工作量,非常适合在学校处理学生成绩过程中推广使用。后续可使用Pandas或其他数据分析库进一步挖掘数据间隐含的规律,为学校决策提供科学依据。

参考文献:

[1]刘新鹏,高斌.利用Python和Pandas进行学生成绩处理[J].信息与电脑,2020(07):41-43.

[2]宋永生,黄蓉美,王军.基于Python的数据分析与可视化平台研究[J].现代信息科技,2019(11):7-9.

[3]刘雨珂,王平.基于Python+Pandas+Matplotlib的学生成绩数据统计与图形输出实现[J].福建电脑,2017,33(11):104-106.

[4]张若愚.Python科学计算:第2版[M].北京:清华大学出版社,2016.

[5]韩文煜.基于Python数据分析技术的数据整理与分析研究[J].科技创新与应用,2020(04):157-158.

猜你喜欢
可视化
数据可视化设计在美妆类APP中的应用
地理可视化作业设计研究
基于文献可视化的国内港口建设研究综述
画图:数学思维可视化的有效工具
思维可视化
基于GeoGebra的高中物理可视化教学研究
基于物联网的IT运维可视化管理系统设计与实现
复变函数级数展开的可视化实验教学
复变函数级数展开的可视化实验教学
复变函数共形映射的可视化实验教学