python数据分析案例-研究生成绩分析

一、简介

在本次研究中,我们对2018年硕士生考试成绩数据进行了深入的统计分析。这项分析旨在探索不同因素如性别、生源背景、基因型以及出生月份等对学生成绩的潜在影响。我们使用了一系列的统计方法,包括描述性统计分析、相关性分析、分组分析以及方差分析(ANOVA),以获得对这些数据的全面理解。这些方法不仅帮助我们洞察数据的基本特性,还揭示了不同变量之间的相互关系。

二、主要过程

首先进行问题分析:

描述性统计分析:计算平均分、中位数、标准差等,以了解成绩的总体分布情况。

性别差异分析:比较男女学生在各科目及总分上的表现差异。

生源背景分析:探究学生的生源背景(城镇或农村)对成绩的可能影响。

基因型分析:检查不同基因型(gene1和gene2)与成绩之间的关系。

生日与成绩的关系:分析学生的出生日期是否与成绩表现有关联。

首先读取数据:

完整代码和数据

import pandas as pd
from io import StringIO
import numpy as np

data_df = pd.read_csv("C:/Users/Administrator/Desktop/data3.csv", encoding='gbk')
data_df 

进行描述性统计分析

名词

填空

简答

计算

综合

生日

mean

23.57

16.202

14.340

16.945

71.208

1989-07-08 04:45:19

min

10

3

6

4

48.5

1986-01-05 00:00:00

25%

19

15

11

13

62.75

1988-11-12 12:00:00

50%

26

16

15

16

72

1989-08-23 00:00:00

75%

27

18

17

20

79.5

1990-03-17 00:00:00

max

30

20.5

20

29

94.5

1998-11-15 00:00:00

std

4.589309

2.280534

3.597774

5.052427

10.97635

1989-07-08 04:45:19

平均分(总分):71.21分

最高分(总分):94.5分

最低分(总分):48.5分

总体上,学生的成绩分布在48.5分到94.5分之间,平均成绩为71.21分。

# 性别差异分析
gender_diff = data_df.groupby('性别').mean()
gender_diff

性别差异分析

名词

填空

简答

计算

综合

性别

F

24.184739

16.329317

14.433735

17.112450

72.222892

M

23.038462

16.092657

14.258741

16.800699

70.325175

接下来可视化一下:

# 男生平均总分:70.63分
# 女生平均总分:72.22分
# 女生在平均总分上略高于男生。

# 生源背景分析
origin_diff = data_df.groupby('生源').mean()
origin_diff

接下来可视化一下:

# 创建一个画布和子图
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
import seaborn as sns
fig, axes = plt.subplots(2, 3, figsize=(18, 12))

# 性别差异分析可视化
sns.barplot(x=gender_diff.index, y="综合", data=gender_diff, ax=axes[0, 0])
axes[0, 0].set_title('性别对总分的影响')
axes[0, 0].set_xlabel('性别')
axes[0, 0].set_ylabel('平均总分')

# 生源背景分析可视化
sns.barplot(x=origin_diff.index, y="综合", data=origin_diff, ax=axes[0, 1])
axes[0, 1].set_title('生源背景对总分的影响')
axes[0, 1].set_xlabel('生源背景')
axes[0, 1].set_ylabel('平均总分')

# 基因型分析可视化
sns.barplot(x=gene1_diff.index, y="综合", data=gene1_diff, ax=axes[0, 2])
axes[0, 2].set_title('基因型gene1对总分的影响')
axes[0, 2].set_xlabel('基因型gene1')
axes[0, 2].set_ylabel('平均总分')

sns.barplot(x=gene2_diff.index, y="综合", data=gene2_diff, ax=axes[1, 0])
axes[1, 0].set_title('基因型gene2对总分的影响')
axes[1, 0].set_xlabel('基因型gene2')
axes[1, 0].set_ylabel('平均总分')

# 生日与成绩的关系可视化
sns.barplot(x=birthday_diff.index, y="综合", data=birthday_diff, ax=axes[1, 1])
axes[1, 1].set_title('出生月份对总分的影响')
axes[1, 1].set_xlabel('出生月份')
axes[1, 1].set_ylabel('平均总分')

# 调整布局,防止标签重叠
plt.tight_layout()

plt.show()

# 相关性分析:分析不同科目成绩之间的相关性,以及这些科目成绩与总分的相关性。
# 回归分析:可以使用线性回归模型来探究哪些因素(如性别、生源、基因型等)对总分的影响最大。
# 分组分析:根据基因型、性别或生源进行更细致的分组,分析各组内成绩的分布情况。
# 年龄与成绩的关系:计算学生的年龄,并分析年龄与成绩之间的关系。
# 异常值检测:检查数据中是否存在异常值,这些异常值可能会对分析结果产生影响。

# 可视化基因型对成绩的影响
plt.figure(figsize=(10, 6))
sns.barplot(x='gene1', y='综合', data=data_df, ci=None)
plt.title('基因型gene1对总分的影响')
plt.xlabel('基因型gene1')
plt.ylabel('平均总分')
plt.show()

 

可视化相关性分析:

# 相关性分析
correlation = data_df[['名词', '填空', '简答', '计算', '综合', '年龄']].corr()
correlation

 

# 可视化相关性分析
plt.figure(figsize=(10, 6))
sns.heatmap(correlation, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('科目间及与总分的相关性')
plt.show()

 科目间及与总分的相关性:展示了不同科目之间以及与总分之间的相关性。可见“名词”科目与总分的相关性最高。各科目间及与总分的相关性:科目“名词”与总分(综合)的相关性最高(0.79),其次是“简答”(0.79)和“计算”(0.76)。这表明这些科目对总分有较大影响。年龄与成绩的相关性:年龄与各科目成绩及总分的相关性都很低,说明年龄对成绩影响不大。

...

线性回归分析

由于涉及多个分类变量,此处使用ANOVA(方差分析)

anova_table = sm.stats.anova_lm(model, typ=2)
anova_table

sum_sq

df

F

PR(>F)

C(性别)

10.522103

1.0

0.105609

7.453292e-01

C(生源)

0.292350

1.0

0.002934

9.568212e-01

C(gene1)

7366.159076

2.0

36.966647

9.589150e-16

C(gene2)

3889.908051

2.0

19.521281

6.652673e-09

Residual

52207.430611

524.0

NaN

NaN

基因型对成绩的影响显著:基因型(gene1和gene2)对总分有显著影响(P值远小于0.05)。

性别和生源对成绩的影响不显著:性别和生源对总分的影响不显著(P值大于0.05)。

三、总结

通过对硕士生考试成绩的综合分析,我们发现几个关键的发现。首先,性别和生源背景对学生成绩的影响不显著,而基因型在学生成绩上表现出显著的影响,特别是BB基因型的学生在总分上表现最好。其次,不同科目间的成绩相关性分析显示,“名词”科目与总分的相关性最高。此外,年龄对学生成绩的影响相对较小。最这些发现为理解硕士生的学术表现提供了重要的洞察,并为未来的教育研究和政策制定提供了数据支持。

创作不易,希望大家多多点赞收藏和评论!

  • 35
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值