学生成绩统计处理后图形展示

题目描述

某班有10名学生的5门课程成绩。首先系统随机生成10名学生的姓名(要求有一个是自己的姓名);

然后要求用户输入5门课的名称(不得为英文),系统随机生成所有学生成绩(0-100范围内);

然后系统以表格形式将所有学生成绩写入文件“你的姓名学号_score.csv”。

然后读入该表格,统计每个学生课程的总分、平均分,并添加到文件中表格的后续列中。

将总分排名前三的学生的各科成绩打印输出到屏幕上;

然后统计每门课程的最高分、最低分、中位数分、平均分,并绘制统计图形,展示这几类成绩分布。

案例源码

以下是一个解决这个问题的Python代码示例。在这个示例中,我们使用了pandas库来处理表格数据,numpy库来进行数值计算,matplotlib库来绘制图形。

import pandas as pd
import numpy as np
import random
import string
import matplotlib.pyplot as plt

# 随机生成学生姓名
student_names = ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十', '郑十一', '你的姓名']
random.shuffle(student_names)

# 用户输入5门课程名称
course_names = [input(f"请输入第{i+1}门课程的名称:") for i in range(5)]

# 随机生成学生成绩
grades_data = np.random.randint(0, 101, size=(10, 5))
grades_df = pd.DataFrame(data=grades_data, columns=course_names, index=student_names)

# 写入文件
file_name = f"{student_names[-1]}_score.csv"
grades_df.to_csv(file_name)

# 读取文件并添加总分、平均分列
grades_df = pd.read_csv(file_name, index_col=0)
grades_df['总分'] = grades_df.sum(axis=1)
grades_df['平均分'] = grades_df.mean(axis=1)

# 打印总分排名前三的学生各科成绩
top_students = grades_df.nlargest(3, '总分')
print(top_students)

# 统计每门课程的最高分、最低分、中位数分、平均分并绘制图形
course_stats = grades_df.describe().loc[['min', 'max', '50%', 'mean']]
course_stats.plot(kind='bar', figsize=(10, 6))
plt.title('课程成绩统计')
plt.ylabel('分数')
plt.show()

这段代码首先随机生成学生姓名,并要求用户输入5门课程名称。然后随机生成10名学生的成绩并写入CSV文件中。接着读取文件,并添加总分和平均分列,并打印总分排名前三的学生各科成绩。最后统计每门课程的最高分、最低分、中位数分、平均分,并绘制成绩统计图形。

© 版权声明
THE END
喜欢就支持一下吧
点赞13赞赏 分享