注意:本实验是基于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,我现在还没有吃饭。嘤嘤嘤~~~·~~

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐