学生成绩分析项目

数据采集

导入必要的库

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.hqwc.cn/news/14940.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【运维】GitLab相关配置优化等

默认 Git 设置 http post 的缓存为 1MB,使用命令将git的缓存设为500M,重新配置一下postBuffer值 git config --global http.postBuffer 524288000 解决方法2:直接修改config参数, windows: ./git/config中,加入以下…

Freertos-mini智能音箱项目---IO扩展芯片PCA9557

项目上用到的ESP32S3芯片引脚太少,选择了PCA9557扩展IO,通过一路i2c可以扩展出8个IO。这款芯片没有中断输入,所以更适合做扩展输出引脚用,内部寄存器也比较少,只有4个,使用起来很容易。 输入寄存器 输出寄存…

【Linux】高级IO(二)

文章目录 高级IO(二)I/O多路转接之pollpoll服务器 I/O多路转接之epollepoll相关函数epoll工作原理epoll回调机制epoll服务器epoll的优点 高级IO(二) I/O多路转接之poll poll也是系统提供的一个多路转接接口 poll系统调用也可以…

基于go-zero的api服务刨析并对比与gin的区别

zero路由与gin的区别 官网go-zero go-zero是一个集成了各种工程实践的微服务框架,集多种功能于一体,如服务主要的API服务,RPC服务等。除了构建微服务工程外,zero也是一款性能优良的web框架,也可以构建单体web应用。 …

最新AI创作系统V5.0.2+支持GPT4+支持ai绘画+实时语音识别输入+文章资讯发布功能+用户会员套餐

最新AI创作系统V5.0.2支持GPT4支持ai绘画实时语音识别输入文章资讯发布功能用户会员套餐! AI创作系统一、源码系统介绍二、AI创作系统程序下载三、安装教程四、主要功能展示五、更新日志 AI创作系统 1、提问:程序已经支持GPT3.5、GPT4.0接口 2、支持三种…

Maven 配置本地jar,通过下载第三方jar包,然后手动配置maven jar包依赖 例如:IKExpression

说明:有时候有一些jar包 maven中央仓库和阿里云仓库没有收录的jar包需要手动下载至本地进行手动添加maven依赖,就拿 IK表达式 IKExpression jar 包来说 第一步 下载IKExpression 包 没有这个包的同学可以点击下载阿里云盘分享 第二步 找到自己项目本地…

Redis 五种基本数据结构及基本使用

一、数据结构 二、使用 2.1 String 的使用 Redis String 一个键对应一个值,并且是二进制安全的,值可以是图片或者序列化后的对象。 一个键最大能存储 512 MB。 2.1.1 set 命令的使用 set key value127.0.0.1:6379> set name yunhu OK 127.0.0.1:…

二十三种设计模式第十四篇--策略模式

策略模式:主要围绕一个类的行为或者其算法在运行时更改,也是一种行为型模式。 在软件开发中,我们经常遇到需要根据不同的情况选择不同算法或行为的情况。传统的做法是使用大量的条件语句来实现这种逻辑,但这样的实现方式往往难以…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册9

随着科技的不断进步,机器人技术已经成为了一个重要的领域。在这个领域中,机械结构是机器人设计中至关重要的一部分,它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说,了解机械结构的基础知识,掌…

[MySQL]MySQL表的约束

[MySQL]表的约束 文章目录 [MySQL]表的约束1. 约束的概念2. 空属性(null/not null)3. 默认值(default)4. 列描述(comment)5. 填充零(zerofill)6. 主键(primary key)7. 自增长(auto_increment)8. 唯一键(unique)9. 外键(foreign key) 1. 约束的概念 数据库通过技术手段限制数据的…

ADS笔记,新旧两组仿真数据进行绘图和列表对比

做个笔记,以防遗忘 ADS版本:2023 原理图器件参数的不同,怎么进行对比观看,操作如下 目录 一、数据绘图对比二、数据列表对比 一、数据绘图对比 选择Simulation Setting 然后修改原理图器件的参数,再次重复之前的操作…

MySQL自治平台建设的内核原理及实践(上)

本文整理自美团技术沙龙第75期的主题分享《美团数据库攻防演练建设实践》,系超大规模数据库集群保稳系列(内含4个议题的PPT及视频)的第4篇文章。 本文作者在演讲后根据同学们的反馈,补充了很多技术细节,跟演讲&#xf…