欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

利用Python分析学生成绩(完整版)

程序员文章站 2024-02-27 20:32:09
...

注意:本实验是基于Anconda3.X所进行的

  • 一、题目描述
  • 二、题目分析
  • 三、完整代码展示
  • 四、结果展示

一、题目描述

个人构造一个30名学生的班级,每名学生有三门课程,学生的学号和各门成绩形如:
学号 高数 英语 Python
1001 85 90 96
1002 96 92 95
1003 78 87 83
为了输入数据方便,请保存在如student_score.csv文件中。
(1)请计算三门课程的总分,此班级每门课程的平均分和最高分及最低分,并绘制相应的图形来统计三门课程的成绩分布。
(2)各图形自拟。
(3)坐标轴标签,图例等属性设置完整。
(4)使用中文标题及标签。

二、题目分析

第一步:我们需要自己建立一个.csv文件或者从Spyder中进行输入,我采用的是自己建立一个student_score.csv文件并且手动输入所有内容。
链接:student_score.csv下载链接
提取码:unms

第二步:在Spyder中读取student_score.csv为DataFrame字符流,并且赋值给df,需要设置编码格式为GBK格式,此处我把student_score.csv文件存放在E盘目录下。

df=pd.read_csv('E:\\student_score.csv',encoding='GBK')

第三步:设置字体格式,下面需要用到matplotlib库,需要设置字体格式,否则图形可视化的时候中文标题无法显示,设置方法如下:

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

第四步:从df中提取需要的数据。

Python_max=df.Python.max() #python最大值
math_max=df.高数.max()  #高数最大值
english_max=df.英语.max()  #英语最大值

Python_min=df.Python.min() #python最小值
math_min=df.高数.min() #高数最小值
english_min=df.英语.min() #英语最小值

name=df.学号
students_scores=df.高数+df.Python+df.英语 #学生总成绩

Python_avg=df.Python.mean()#python平均分
math_avg=df.高数.mean() #高数平均分
english_avg=df.英语.mean() #英语平均分

第五步:在代码开头导入相关的包。

import matplotlib.pyplot as plt
import pandas as pd

第六步:对数据可视化。

plt.title('学生总成绩分布图')
plt.xlabel('学号')
plt.ylabel('总分')
plt.bar(name,students_scores)
plt.figure()
plt.show()

plt.title('每门课程平均分展示图')
plt.xlabel('课程名')
plt.ylabel('平均分')
plt.bar('Python',Python_avg)
plt.bar('高数',math_avg)
plt.bar('英语',english_avg)
plt.figure()
plt.show()

plt.title('每门课程最高分展示图')
plt.xlabel('课程名')
plt.ylabel('最高分')
plt.bar('Python',Python_max)
plt.bar('高数',math_max)
plt.bar('英语',english_max)
plt.figure()
plt.show()

plt.title('每门课程最低分展示图')
plt.xlabel('课程名')
plt.ylabel('最低分')
plt.bar('Python',Python_min)
plt.bar('高数',math_min)
plt.bar('英语',english_min)
#plt.figure() #可以删除
plt.show()

三、完整代码展示

import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
df=pd.read_csv('E:\\student_score.csv',encoding='GBK') #读取student_score.csv文件为DataFrame字符流
Python_max=df.Python.max() #python最大值
math_max=df.高数.max()  #高数最大值
english_max=df.英语.max()  #英语最大值

Python_min=df.Python.min() #python最小值
math_min=df.高数.min() #高数最小值
english_min=df.英语.min() #英语最小值

name=df.学号
students_scores=df.高数+df.Python+df.英语 #学生总成绩

Python_avg=df.Python.mean()#python平均分
math_avg=df.高数.mean() #高数平均分
english_avg=df.英语.mean() #英语平均分

plt.title('学生总成绩分布图')
plt.xlabel('学号')
plt.ylabel('总分')
plt.bar(name,students_scores)
plt.figure()
plt.show()


plt.title('每门课程平均分展示图')
plt.xlabel('课程名')
plt.ylabel('平均分')
plt.bar('Python',Python_avg)
plt.bar('高数',math_avg)
plt.bar('英语',english_avg)
plt.figure()
plt.show()

plt.title('每门课程最高分展示图')
plt.xlabel('课程名')
plt.ylabel('最高分')
plt.bar('Python',Python_max)
plt.bar('高数',math_max)
plt.bar('英语',english_max)
plt.figure()
plt.show()

plt.title('每门课程最低分展示图')
plt.xlabel('课程名')
plt.ylabel('最低分')
plt.bar('Python',Python_min)
plt.bar('高数',math_min)
plt.bar('英语',english_min)
#plt.figure() #可以删除
plt.show()

四、结果展示

利用Python分析学生成绩(完整版)
利用Python分析学生成绩(完整版)
利用Python分析学生成绩(完整版)
利用Python分析学生成绩(完整版)

五、问题总结

有问题可以参考以下链接
数据分析入门常见问题汇总

我太难了,现在是2020年4月1日23:06,我现在还没有吃饭。嘤嘤嘤~~~·~~