Python数据分析-学生表现预测

一、研究背景

随着教育水平的不断提升,学生的学习成绩和综合素质得到了越来越多的关注。除了传统的学术成绩外,课外活动、家长支持等因素也在很大程度上影响着学生的学习表现和未来发展。现代社会中,家长、教师、学校和研究人员都在努力寻找能够帮助学生提升成绩和综合素质的关键因素。因此,研究学生的课外活动参与情况、家长支持程度以及学习时间等因素与其学业表现之间的关系具有重要意义。

在教育研究领域中,已有诸多文献表明,课外活动不仅能够培养学生的社交能力、领导力和团队协作能力,还对他们的学习成绩产生了积极影响。同样,家长的支持不仅在情感上给予学生动力,还在物质和智力支持方面提供了坚实的基础。此外,学生的学习时间和出勤率作为学业表现的直接变量,也与其最终成绩紧密相关。然而,这些因素如何在不同性别群体中表现,以及各个变量之间是否存在交互作用,仍然值得深入探讨。

二、研究意义

本研究旨在探讨多种因素对学生最终学业成绩的影响,尤其是性别、课外活动参与、家长支持、学习时间和出勤率之间的相互作用。这项研究的意义主要体现在以下几个方面:

  1. 丰富教育研究理论:通过分析多种影响学生成绩的因素,可以为教育研究领域提供新的理论依据,帮助我们更全面地理解学生学业表现背后的复杂因素。

  2. 提供实践指导:本研究的结果可以为教育工作者、学校管理人员和家长提供实质性建议。例如,如何有效鼓励学生参与课外活动、提高家长的支持力度,以及合理规划学生的学习时间等。

  3. 关注性别差异:研究中性别维度的引入可以帮助教育者了解男性和女性学生在课外活动、学习方式和家长支持方面的差异,从而提供更有针对性的教育方案。

  4. 政策制定参考:研究成果还可以为教育政策的制定者提供依据,推动更具包容性和灵活性的教育政策,为不同背景的学生提供公平的发展机会。

三、实证分析

导入数据分析基础包

代码和数据集

import pandas as pd
import numpy as np

 读取数据集

df=pd.read_csv(r"student_performance.csv")
df

 

 查看数据基本信息

接下来进行数据可视化

 

import seaborn as sns
import matplotlib.pyplot as plt
tdf=df['Gender'].value_counts().reset_index()
tdf.columns=['Gender','count']
tdf1=df['ExtracurricularActivities'].value_counts().reset_index()
tdf1.columns=['ExtracurricularActivities','count']
tdf2=df['ParentalSupport'].value_counts().reset_index()
tdf2.columns=['ParentalSupport','count']
fig,axs=plt.subplots(1,3,figsize=(13,13),dpi=200)
axs[0].set_title("性别分布")
axs[0].pie(x=tdf['count'],labels=tdf['Gender'],autopct='%.2f%%')
axs[0].legend(tdf['Gender'])
axs[1].set_title("课外活动分配")
axs[1].pie(x=tdf1['count'],labels=tdf1['ExtracurricularActivities'],autopct='%.2f%%')
axs[1].legend(tdf1['ExtracurricularActivities'])
axs[2].set_title("分配家长抚养费")
axs[2].pie(x=tdf2['count'],labels=tdf2['ParentalSupport'],autopct='%.2f%%')
axs[2].legend(tdf2['ParentalSupport'])
plt.tight_layout()
plt.show()

 

此数据集中的男生和女生数量相等 对于课外活动,大约 80% 的学生参加了课外活动,其中 20% 的学生参加了 3 种课外活动 大约 70% 的学生受益于中高家长支持。而其余 30% 的不幸者试图从低父母支持:(中受益 总体而言,数据显示,学生群体总体上是积极的,他们强烈倾向于参与课外活动,并且有相当多的学生受益于支持性的家长关系。 

fig,axs=plt.subplots(1,2,figsize=(15,6),dpi=200)
sns.countplot(x=df['ExtracurricularActivities'],hue=df['Gender'],ax=axs[0])
sns.countplot(x=df['ParentalSupport'],hue=df['Gender'],ax=axs[1])
plt.tight_layout()
plt.show()

 

与女性相比,男性不参加课外活动(类别 0)的学生人数更高,这非常令人担忧 与男性相比,女性对 1 项和 2 项课外活动的参与度更高。 男女对 3 项课外活动的参与率几乎相等,总体人数略低。 结论:女学生总是参加很棒的课外活动,而男学生更有可能不参加任何活动。

父母支持与性别 (右图):获得家长高支持的男女学生分布相等。 女学生在中等父母支持类别中占主导地位,表明该群体中更倾向于中等程度的支持。 男学生是唯一属于低父母抚养费类别的学生,没有女性代表。

按性别划分的最终成绩:与男性相比,女性的最终成绩往往更高,分数的可变性较小。 女性的中位等级高于男性。 女性群体中有一些异常值,但总体而言,女性的平均表现优于男性。

课外活动的最终成绩:参与更多课外活动的学生(尤其是那些有 3 项活动的学生)往往具有较高的最终成绩,他们的分数差距较小。 箱线图显示,随着课外活动数量的增加,成绩呈增加趋势。 没有课外活动的学生的最终成绩中位数最低,而参与 3 项活动的学生最高。

家长支持的最终成绩:父母支持较高的学生往往有更好的最终成绩。 父母支持与最终成绩之间存在明显的正相关关系,父母支持率高导致成绩中位数最高,而父母支持率低。

plt.figure(figsize=(15, 4),dpi=200)
sns.scatterplot(data=df, x='StudyHoursPerWeek', y='PreviousGrade', label='Previous Grade')
sns.scatterplot(data=df, x='StudyHoursPerWeek', y='FinalGrade', label='Final Grade')
plt.title("每周学习时间与期末和前期成绩")
plt.legend()
plt.show()

每周更多的学习时间与更高的学习成绩呈正相关,无论是在以前的成绩还是最终成绩方面。 也可以推断出前期成绩和期末成绩之间的一致性,因为之前成绩好的学生往往在有足够的学习时间的情况下继续表现良好。 

 

fig, axs = plt.subplots(1, 3, figsize=(18, 6))

sns.scatterplot(x=df['StudyHoursPerWeek'], y=df['FinalGrade'], ax=axs[0],hue=df['Gender'])
axs[0].set_title('学习时间与最终成绩')
axs[0].set_xlabel('Study Hours Per Week')
axs[0].set_ylabel('Final Grade')


sns.scatterplot(x=df['AttendanceRate'], y=df['FinalGrade'], ax=axs[1],hue=df['Gender'])
axs[1].set_title('出勤率与最终成绩')
axs[1].set_xlabel('Attendance Rate')
axs[1].set_ylabel('Final Grade')


sns.scatterplot(x=df['ExtracurricularActivities'], y=df['FinalGrade'], ax=axs[2],hue=df['Gender'])
axs[2].set_title('课外活动与最终成绩')
axs[2].set_xlabel('Extracurricular Activities')
axs[2].set_ylabel('Final Grade')

plt.tight_layout()
plt.show()

 相关系数热力图

plt.figure(figsize=(12,4),dpi=200)
tdf=df.select_dtypes(include=['int64'])
sns.heatmap(tdf.corr(),annot=True)
plt.show()

 建模前数据预处理

df.drop(columns=['StudentID','Name'],inplace=True,axis=1)
print(df['Gender'].value_counts())

df['Gender']=df['Gender'].apply(lambda x: 1 if x=='Male' else 0)
print(df['ParentalSupport'].value_counts())

df['ParentalSupport']=df['ParentalSupport'].apply(lambda x: 2 if x=='High' else 1 if x=='Medium' else 0)
print(df.info())

plt.figure(figsize=(12,4),dpi=200)
sns.heatmap(df.corr(),annot=True)
plt.show()

 建立模型

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error

数据准备和标准化

x_t,x_te,y_t,y_te=train_test_split(x,y,test_size=0.25,random_state=20)
ss=StandardScaler()
x_t=ss.fit_transform(x_t)
x_te=ss.transform(x_te)

 # Linear Regression

reg=LinearRegression()
reg.fit(x_t,y_t)
pred1=reg.predict(x_te)
pred2=reg.predict(x_t)

print("Training Metrics")
print('R2 Score: ',r2_score(y_t,pred2))
print('Mean Squared Error: ',mean_squared_error(y_t,pred2))
print('Mean Absolute Error: ',mean_absolute_error(y_t,pred2))

print("Testing Metrics")
print('R2 Score: ',r2_score(y_te,pred1))
print('Mean Squared Error: ',mean_squared_error(y_te,pred1))
print('Mean Absolute Error: ',mean_absolute_error(y_te,pred1))

 

可视化残差

residuals=y_te-pred1
sns.displot(residuals, kind='kde', height=5, aspect=3)
plt.title("Residuals")
plt.show()

 

四、研究结论

通过对数据的实证分析,本研究得出了以下关键结论:

  1. 性别差异:研究表明,女性学生在学术成绩上往往表现优于男性,尤其是在期末成绩上,女性的成绩中位数较高,且分数的波动较小。与男性相比,女性学生更积极参与课外活动,尤其是在参加一项或两项课外活动时表现更为突出。此外,男性学生更可能不参加任何课外活动,这一现象需要引起关注,因为课外活动与学术成绩呈现正相关关系。

  2. 课外活动的影响:参与更多课外活动的学生(特别是参与三项活动的学生)表现出了较高的学术成绩,其期末成绩的中位数明显高于没有参加课外活动的学生。课外活动不仅丰富了学生的校园生活,还对学生的学术发展起到了促进作用。

  3. 家长支持的作用:家长支持对学生的最终成绩有显著影响,父母支持程度越高,学生的学业表现越好。高水平的家长支持不仅体现在经济和物质上,还包括情感上的鼓励和智力上的帮助。研究显示,性别与家长支持之间也存在一定的差异,男性学生在低支持水平中占主导地位,而女性学生则更多处于中等支持水平。

  4. 学习时间和出勤率:每周的学习时间与学生的期末成绩和之前的成绩都呈现正相关关系。更多的学习时间帮助学生取得更高的学术成就。此外,出勤率也是影响学生学术表现的重要因素,高出勤率的学生往往能取得更好的成绩。

  5. 模型分析结果:在回归模型中,课外活动、家长支持、学习时间等变量与学生的学业表现之间的关系得到了验证。最终的模型结果显示,这些变量能够较好地解释学生成绩的变化,尤其是课外活动和家长支持对成绩的贡献显著。

综上所述,本研究揭示了多种因素对学生学业成绩的影响,尤其是课外活动和家长支持的重要性。未来的研究可以进一步探讨这些因素在不同文化背景和教育体制下的表现,帮助优化教育资源的分配,推动学生全面发展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值