Python 统计学生成绩并进行可视化统计
实验目的
对学生学习情况进行数据可视化分析
实验数据
实验内容
- 分析学校的男女比例,并判断男女学生的选课情况和学习情况
- 看各学科的选课情况及成绩分布
- 看缺课与成绩的关系
- 看成绩和班级的关系
列索引
'''
'gender', 'NationalITy', 'PlaceofBirth', 'StageID', 'GradeID',
'SectionID', 'Topic', 'Semester', 'Relation', 'raisedhands',
'VisITedResources', 'AnnouncementsView', 'Discussion',
'ParentAnsweringSurvey', 'ParentschoolSatisfaction',
'StudentAbsenceDays', 'Class'
'''
- Class :班级
- gender:性别
- Topic:课程名称
- StudentAbsenceDays:缺课天数
- SectionID:班级号
内容一
#首先看一下学生的男女比例
gender = stu['gender'].value_counts(ascending=True) #求每一个元素的个数并排序
gender.plot(kind='pie',shadow=True,explode=(0,0.1),autopct='%1.1f%%',startangle=90,legend=False,colormap='Set3')
#画饼状图
#成绩人数比以及男女选课情况
dic = {
}
dic2 = {
}
for i in range(len(gender)):
temp = stu['gender'] == gender.index[i] #筛查找出同性别的学生
dic[gender.index[i]] = stu[temp]['Class']
dic[gender.index[i]] = dic[gender.index[i]].value_counts(ascending=True)
dic2[gender.index[i]] = stu[temp]['Topic']
dic2[gender.index[i]] = dic2[gender.index[i]].value_counts(ascending=True)
dic_gen = pd.DataFrame(dic)
dic_gen['F'] = dic_gen['F']/np.sum(dic_gen['F'])
dic_gen['M'] = dic_gen['M']/np.sum(dic_gen['M'])
dic_gen.plot(kind='bar',rot=0,colormap='Set3')
dic2_sel = pd.DataFrame(dic2)
dic2_sel.plot(kind='pie',subplots=True,figsize=(20,20),legend=None,colormap='Set3',fontsize=15)
#从图中可以看出,女生成绩好一点,但男生成绩更加集中
#从选课情况看女生选语言选得要比男生多,但男生选IT和数学选得比女生多
#最后看一下全体同学情况
grade = stu['Class'].value_counts(ascending=True)
grade = grade[['L','M','H']]
grade.plot(kind='bar',rot=0)
#看起来也比较服从正态分布