1.数据集来源地址:https://www.kaggle.com/datasets/jakwagarba/xapiedudatacsv/data
2.数据集名称:xAPI-Edu-Data.csv,共 17个字段,480条数据,本篇文章旨在研究
大数据对在线教育的意义,故忽略数据集数据量本身较小的问题。
其中数据集各字段意义如下:
gender ——性别
Nationality——国籍
Placeofbirth——出生地
StageID——教育阶段
GradeID——年级
SectionID——班级
Topic—— 课程主题
Semester—— 学期
Relation——谁对学生负责
raisedhands——学生举手次数
VisiTedResources- 学生访问课程次数
AnnouncementsViewing——学生查看通知次数
Discussion——学生参加讨论组的次数
ParentAnsweringSurvey——家长回答是否由学校提供的调查
ParentschoolSatisfaction —— 家长对学校的满意程度
Student Absence Days——学生缺席的天数
class——成绩
3.
该项目研究主要使用python进行数据分析, 开发环境为anaconda3, conda –version
版本号显示为23.1.0,主要代码编写工具为 Jupyter Notebook。
该项目代码使用的主要模块版本号如下:
pandas 1.5.3
matplotlib 3.7.0
seaborn 0.12.2
读者若要使该项目代码能正常运行,可在安装模块时,指定以上版本号进行模块
安装。安装方式如下:
pip install pandas==1.5.3
pip install matplotlib==3.7.0
pip install seaborn==0.12.2
4.
import pandas as pd import matplotlib.pyplot as plt sp = pd.read_csv("xAPI-Edu-Data.csv") # 导入数据 %matplotlib inline plt.rcParams['font.sans-serif'] = 'SimHei' fig1 = plt.figure(facecolor='white', figsize=(20, 40)) ax1 = plt.subplot(6, 3, 1) plt.pie(sp['gender'].value_counts(), labels=['M', "F"], autopct='%1.1f%%', startangle=0) plt.axis('equal') plt.title('性别分布情况') ax1 = plt.subplot(6, 3, 2) plt.pie(sp['PlaceofBirth'].value_counts(), labels=list(set(sp['PlaceofBirth'].values.T.tolist()[:])), autopct='%1.1f%%', startangle=0) plt.axis('equal') plt.title('出生地分布情况') ax1 = plt.subplot(6, 3, 3) plt.pie(sp['StageID'].value_counts(), labels=list(set(sp['StageID'].values.T.tolist()[:])), autopct='%1.1f%%', startangle=0) plt.axis('equal') plt.title('教育阶段分布情况') ax1 = plt.subplot(6, 3, 4) plt.pie(sp['GradeID'].value_counts(), labels=list(set(sp['GradeID'].values.T.tolist()[:])), autopct='%1.1f%%', startangle=0) plt.axis('equal') plt.title('年级分布情况') ax1 = plt.subplot(6, 3, 5) plt.pie(sp['Relation'].value_counts(), labels=list(set(sp['Relation'].values.T.tolist()[:])), autopct='%1.1f%%', startangle=0) plt.axis('equal') plt.title('对学生负责情况') ax1 = plt.subplot(6, 3, 6) plt.pie(sp['raisedhands'].value_counts(), labels=list(set(sp['raisedhands'].values.T.tolist()[:])), autopct='%1.1f%%', startangle=0) plt.axis('equal') plt.title('学生举手次数情况') ax1 = plt.subplot(6, 3, 7) plt.pie(sp['SectionID'].value_counts(), labels=list(set(sp['SectionID'].values.T.tolist()[:])), autopct='%1.1f%%', startangle=0) plt.axis('equal') plt.title('班级分布情况') ax1 = plt.subplot(6, 3, 8) plt.pie(sp['Topic'].value_counts(), labels=list(set(sp['Topic'].values.T.tolist()[:])), autopct='%1.1f%%', startangle=0) plt.axis('equal') plt.title('课程主题情况') ax1 = plt.subplot(6, 3, 9) plt.pie(sp['Semester'].value_counts(), labels=list(set(sp['Semester'].values.T.tolist()[:])), autopct='%1.1f%%', startangle=0) plt.axis('equal') plt.title('学期分布情况')
由上图分析出:学生中女生数量多于男生,学生的国籍、出生 70%是埃及或叙利亚。学生来自高中最多,小学次之,初中最少。学生年级大多是 4,、7、10年级,班级中A班和C 班较多;学科方面:学 IT 的学生人数最多,其次是法语,人数最少的是历史,学 IT的人数几乎是学历史的 5 倍左右;学生负责人是妈妈比较多;有 60%的学生缺席次数不超过七天,学生成绩等级达到优秀的最多,中等次之。
import seaborn as sns plt.rcParams['font.sans-serif']='SimHei' fig,axes=plt.subplots(2,2) fig.set_size_inches(20,10) sns.histplot(sp['raisedhands'],ax=axes[0,0]) sns.histplot(sp['VisITedResources'],ax=axes[0,1]) sns.histplot(sp['AnnouncementsView'],ax=axes[1,0]) sns.histplot(sp['Discussion'],ax=axes[1,1]) axes[0,0].set(xlabel='raisedhands') axes[0,1].set(xlabel='VisITedResources') axes[1,0].set(xlabel='AnnouncementsView') axes[1,1].set(xlabel='Discussion')
学生举手次数和访问课程次数比较平均,有学生举手次数或访问课程次数达到100%,也存在学生从不举手或访问课程。大部分学生查看通知和参加讨论的次数较少。
sns.set(rc={'figure.figsize':(20,7)}) sns.countplot(x='SectionID',hue='Class',hue_order=['L','M','H'],data=sp) #班级和成绩的关系
sns.set(rc={'figure.figsize':(20,7)}) sns.countplot(x='Topic',hue='Class',hue_order=['L','M','H'],data=sp) #学科和成绩的相关性
sns.set(rc={'figure.figsize':(20,7)}) sns.countplot(x='Relation',hue='Class',hue_order=['L','M','H'],data=sp) #学生负责人和学生成绩的相关性
sns.set(rc={'figure.figsize':(20,7)}) sns.countplot(x='gender',hue='Class',order=['M','F'],hue_order=['L','M','H'],data=sp) #性别和成绩的相关性分析
由图可以看出班级和成绩分布符合客观规律,每个班级都是中等成绩的数最多;对于12个学科,有 11 个学科都存在着部分同学处于不及格的状态,只有地质学这门课程学生全部达到中等及以上;对于 IT 这门课程,虽然学习的人数最多,但是大部分同学获得的成绩在中等及中等以下,只有少部分学生的成绩达到优秀,说明学生对于这门课程的掌握程度还有待于提升;学习历史的人数最少,但是成绩中等的学生最多,成绩优秀和成绩较差的学生相对较少。学生负责人是母亲的学生学习成绩中优秀的多,中等次之,不及格少,而负责人是父亲的则相反。
32 评论