学生成绩分析项目

news2024/11/13 12:29:59

数据采集

导入必要的库

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

加载数据集

df = pd.read_csv('D:\\桌面\\数据\\student_marks.csv')

显示数据框的前几行
在这里插入图片描述

# 显示数据框的形状
print("Shape of the dataframe:", df.shape)

#显示列名称
print("\nColumns in the dataframe:", df.columns)

# 显示每列的数据类型
print("\nData types of the columns:")
print(df.dtypes)

# 显示每列的摘要统计信息
print("\nSummary statistics:")
print(df.describe())

在这里插入图片描述
在这里插入图片描述

数据加载和探索

# 计算每个测试的描述性统计数据
test_stats = df.describe()

# 计算每次测试的平均值
test_means = df.mean()

# 确定平均分数最高和最低的测试
highest_avg_test = test_means.idxmax()
lowest_avg_test = test_means.idxmin()
#打印最高和最低平均考试成绩
print("Test with the highest average score:", highest_avg_test)
print("Test with the lowest average score:", lowest_avg_test)

在这里插入图片描述
使用直方图可视化每个测试的分数分布


fig, axes = plt.subplots(nrows=3, ncols=4, figsize=(16, 12))

for i, col in enumerate(df.columns[1:]):
    ax = axes[i // 4, i % 4]
    df[col].plot(kind='hist', ax=ax, title=col)
    ax.set_xlabel('Score')
    ax.set_ylabel('Frequency')

plt.tight_layout()
plt.show()

在这里插入图片描述
使用箱线图可视化每个测试的分数分布


fig, axes = plt.subplots(nrows=3, ncols=4, figsize=(16, 12))

for i, col in enumerate(df.columns[1:]):
    ax = axes[i // 4, i % 4]
    df[col].plot(kind='box', ax=ax, vert=False, title=col)
    ax.set_xlabel('Score')

plt.tight_layout()
plt.show()

在这里插入图片描述

个人测试成绩分析

# 计算每次测试的平均分
test_means = df.mean()

# 创建测试名称列表
test_names = df.columns[1:]

使用折线图绘制测试中的分数趋势


plt.figure(figsize=(10, 6))
plt.plot(test_names, test_means[1:], marker='o')
plt.title('Trend of Scores Across Tests')
plt.xlabel('Test')
plt.ylabel('Mean Score')
plt.xticks(rotation=45)
plt.grid(True)
plt.show()

在这里插入图片描述
使用条形图绘制测试中的分数趋势


plt.figure(figsize=(10, 6))
plt.bar(test_names, test_means[1:])
plt.title('Trend of Scores Across Tests')
plt.xlabel('Test')
plt.ylabel('Mean Score')
plt.xticks(rotation=45)
plt.grid(True)
plt.show()

在这里插入图片描述

趋势分析

# 计算相关矩阵
correlation_matrix = df.corr()

#使用热图可视化相关矩阵
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('Correlation Matrix of Test Scores')
plt.show()

在这里插入图片描述

报告

# 审查和完善

# 识别并处理丢失或不一致的数据
#检查缺失值
missing_values = df.isnull().sum()
print("\nMissing Values:\n", missing_values)

# 处理缺失值(例如:用平均值填充)
df_filled = df.fillna(df.mean())

# 使用精炼数据重新计算描述性统计数据和趋势
refined_test_stats = df_filled.describe()
refined_test_means = df_filled.mean()

# 用精炼后的数据重新计算相关矩阵
refined_correlation_matrix = df_filled.corr()

# 使用精炼的分析结果查看并更新报告 精炼报告 = '''
# 学生考试成绩分析报告(精炼版)

## 数据集概述

该数据集包含有关学生在 12 项测试中的成绩的信息。

- Number of students: {}
- Number of tests: {}

## 分析结果(精炼)

### 描述性统计

每个测试的描述性统计:

{}

### 趋势分析

各测试的分数趋势:

![Trend of Scores](trend_of_scores.png)

### 模式识别

测试成绩的相关矩阵:

![Correlation Matrix](correlation_matrix.png)

## 结论

基于对数据集的精细分析,可以突出以下观察结果和见解:
- The highest average score is obtained in the test: {}
- The lowest average score is obtained in the test: {}
- T测试分数显示测试 X 和 Y 之间存在正/负相关性,表明存在潜在关系。

可以进行进一步的分析和探索,以获得对数据集更深入的了解。

'''

# 保存细化的趋势分析图
plt.figure(figsize=(10, 6))
plt.plot(test_names, refined_test_means[1:], marker='o')
plt.title('Refined Trend of Scores Across Tests')
plt.xlabel('Test')
plt.ylabel('Mean Score')
plt.xticks(rotation=45)
plt.grid(True)
plt.savefig('refined_trend_of_scores.png')

# 保存细化的相关矩阵热图
plt.figure(figsize=(10, 8))
sns.heatmap(refined_correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('Refined Correlation Matrix of Test Scores')
plt.savefig('refined_correlation_matrix.png')

# 使用精炼的分析结果更新精炼的报告
refined_report = refined_report.format(df_filled.shape[0], df_filled.shape[1] - 1, refined_test_stats.to_string(), highest_avg_test, lowest_avg_test)

# 将精炼后的报告保存为 Markdown 文件
with open('refined_student_scores_report.md', 'w') as f:
    f.write(refined_report)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736507.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pycharm最新版默认菜单栏等工具不见了

原因 pycharm2022.3新版本,默认使用新UI(如下图),这让很多小伙伴来说不太适应,我还是习惯旧版本的界面。在网上搜了许多恢复旧版本界面的教程,说的解决方案都是由于“手贱把菜单栏给隐藏了”,这…

C语言“教父“

在中国,"C语言教父"一般指的是C语言网的创始人黄老师。他通过C语言网为广大学习者提供了丰富的学习资源和知识分享平台,包括大量的C语言教程、C语言题目以及相应的文档、资源等等,为C语言的推广、教学做出了巨大的贡献和推动作用

Go自带库的使用说明

Go 中的时间操作 Golang中与时间有关的操作,主要涉及到 time 包,核心数据结构是 time.Time,如下: type Time struct {wall uint64ext int64loc *Location }1、获取时间相关函数 1.1 获取当前时间 // 返回当前时间&#xff0c…

腾讯云TRTC服务实现小程序语音/视屏会议

腾讯云TRTC服务的入门 TRTC 是腾讯云主打全平台互通的多人音视频通话和低延时互动直播解决方案。TRTC服务有多种客户端的支持,对于IOS、Android、React native等都支持的比较好,我们主要在于 IOS、Android、Web三端进行处理,其中 TRTC Web S…

HarmonyOS学习路之开发篇—流转

流转概述 介绍 随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,每个设备都能在适合的场景下提供良好的体验,例如:手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备…

网络变压器常见封装

1、单口千兆(Single Port) 封装类型常见型号Dimension SMD24_1 PIN Pitch:1.00 Length:15.1 Width:7.1/10.0 Height:6.00 JWD: SG24002G Group-tek: HST-24015SR SMD24_2 PIN…

pyspark

连接命令: pyspark --master spark://node1:7077 一个application 大任务可以分解成 多个小任务 jobs, 一个job又可以分解成多个 stages 阶段, 一个stage又可以分解成 多个tasks(可以认为是两个线程) standalone Zo…

使用Gradio库创建交互式滑块组件

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

QT DAY3

完善文本编辑器 1.mainwindow.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QDebug> #include <QIcon> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QMessageBo…

如何用Stable Diffusion模型生成个人专属创意名片?

目录 1 什么是二维码&#xff1f;2 什么是扩散模型&#xff1f;3 Stable Diffusion环境搭建4 开始制作创意名片结语 1 什么是二维码&#xff1f; 二维码是一种用于存储和传输信息的方便而广泛使用的图像编码技术。它是由黑色方块和白色空白区域组成的二维图形&#xff0c;可以…

光镊背后的电磁理论 | 涡旋电磁波在无线通信系统中的应用

2018年诺贝尔物理学奖于北京时间10月2日17点50分正式揭晓&#xff0c;发明光镊技术的美国物理学家&#xff0c;阿瑟阿什金&#xff08;Arthur Ashkin&#xff09;&#xff0c;以及开创了啁啾脉冲放大技术的唐娜斯特里克兰&#xff08;Donna Strickland&#xff09;、 热拉尔穆鲁…

持之以恒,安之有度 | 持安科技2周年!

新征程 新未来 持安的同学们已经一起走进 第三个年头啦 近日&#xff0c;持安 北京 上海 深圳 所有公司成员齐聚一堂 共 同 庆 祝 持安科技 成立2周年 持安一体化零信任平台 &#xff0c;引领应用层零信任落地新局面 2021年&#xff0c;何艺&#xff08;持安创始人兼CE…

经典轻量级神经网络(3)ShuffleNet V1及其在Fashion-MNIST数据集上的应用

经典轻量级神经网络(3)ShuffleNet V1及其在Fashion-MNIST数据集上的应用 1 ShuffleNet V1的简述 ShuffleNet 提出了 1x1分组卷积通道混洗 的策略&#xff0c;在保证准确率的同时大幅降低计算成本。 ShuffleNet 专为计算能力有限的设备&#xff08;如&#xff1a;10~150MFLOP…

开发uniapp苹果app,苹果签名证书的创建方法

在uniapp云打包界面&#xff0c;打包苹果app&#xff0c;需要私钥证书p12文件&#xff0c;还需要证书profile文件和证书密码。 这两个文件到底是从什么地方获取的呢&#xff1f;答案是这两个证书需要在苹果开发者中心生成&#xff0c;下面我们这篇教程&#xff0c;将教会大家如…

Java小白的学习之路——day12

目录 一、final 什么是final&#xff1f; 二、接口概述 什么是接口&#xff1f; 与抽象类的区别 常量接口 接口传参多态 四、内部类 什么是内部类&#xff1f; 成员内部类 静态内部类 局部内部类 一、final 什么是final&#xff1f; final从字面意思来看时最终的&a…

你真的了解JS垃圾回收机制吗?

目录 前言 堆栈内存管理 JS垃圾回收机制 标记清除&#xff08;Mark and Sweep&#xff09; 标记阶段 清除阶段 标记清除的特点 优点 缺点 引用计数&#xff08;Reference Counting&#xff09; 引用计数器的维护 引用计数的跟踪 垃圾回收的触发 回收对象 引用计…

视频转音频MP3格式怎么做?教你几种转换小妙招

当我们需要编辑视频中的声音&#xff0c;例如去除噪音、调整音量、加入配乐等&#xff0c;此时需要先将视频中的音频提取出来进行编辑&#xff0c;再将编辑后的音频重新与视频合并&#xff0c;以便达到一个最佳效果。那么怎么将视频转换成MP3格式的音频文件呢&#xff1f;教大家…

SpringBoot项目多模块打包部署Docker实战

前言 我们好多程序员都只关注功能代码的编写&#xff0c;在一些运维工作上则显得略有不足。这篇文章通过介绍最常见的Maven管理的Spring Boot项目多模块打包部署Docker来介绍一下项目部署过程中操作流程和几个需要注意的点。文章假设读者有前面提到的技术点的前置知识&#xf…

C#(五十八)之C#List

前几天&#xff0c;看同事写的代码中有list相关的字眼&#xff0c;百度了一下&#xff0c;原来是C#中list泛型集合。 了解一下。 List&#xff1a;泛型集合&#xff0c;List<T>类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList<T> 泛型…

Maven工程分模块开发讲解及入门案例

1.分模块开发的意义 一个模块只做自己对应的功能&#xff0c;提升开发效率&#xff0c;将一个工程拆分成若干个子模块方便之间相互调用&#xff0c;接口共享&#xff0c;降低耦合度提高代码复用率。 2.分模块开发入门案例 下面将domain这个模块从当前模块当中给拆分出来。 …