利用Python分析学生成绩(完整版)
注意:本实验是基于Anconda3.X所进行的一、题目描述二、题目分析三、完整代码展示四、结果展示一、题目描述个人构造一个30名学生的班级,每名学生有三门课程,学生的学号和各门成绩形如:学号高数英语Python100185909610029692951003788783为了输入数据方便,请保存在如student_score.csv文件中。...
注意:本实验是基于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()
四、结果展示
五、问题总结
有问题可以参考以下链接
数据分析入门常见问题汇总
我太难了,现在是2020年4月1日23:06,我现在还没有吃饭。嘤嘤嘤~~~·~~
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)