用python自动生成全校学生成绩报告

本文通过Python的pandas库分析高中学生成绩,包括年级、班级、学科等多个维度,展示了如何利用编程自动化生成成绩报告。通过数据生成、统计分析、成绩排名和数据保存,突显了Python在数据处理上的优势。
摘要由CSDN通过智能技术生成

在高中阶段,学生考试成绩的分析是一个重要的而频繁的应用场景,快速、有效、精准的生成学生成绩的分析报告,是学情监控和开展个性化教学的前提。这个问题是基础性问题,实现的方法非常多,主要是基于Excel。在这里用python的pandas做一遍,体会一下办公自动化的乐趣。这篇文章以高中学生的成绩分析为背景,使用pandas(是一个基于numpy的python的数据分析包)对学生成绩进行分析。本文分为如下部分:

1、全校成绩表的生成(虚构);

2、年级成绩分析;

3、班级成绩分析;

4、学科成绩分析;

5、总结与思考。

学生成绩分析是本文的场景,写这篇文章的目的是总结我参加华为云大数据挑战赛时对于pandas的学习体会,供大家参考,本文的源码地址:https://github.com/Fire2341/Learning_Summary。

在开始之前,导入numpy和pandas,按照习惯写成如下形式。如果没有这个模块,还是老规矩,使用pip install numpy和pip install pandas安装一下。

import numpy as np
import pandas as pd
一、全校成绩表的生成(虚构)

在开始之前,先生成我们的分析对象,学生成绩表,假设本次考试为理科班的摸底考试。学生成绩表包括:

  1. 基本信息,包括:学生姓名、学生年级、学生班级;

  2. 学生成绩,假设学生的成绩服从正态分布,生成的成绩包括如下科目:语文(150分)、数学(150分)、英语(150)、物理(100分)、化学(100分)、生物(100分),并计算总分。

生成的表格流程如下:先确定每个年级的班级数目,并随机生成各班人数(55-68人之间),由此计算得到全校人数。根据全校人数随机生成学生姓名,并在确定各科平均值和标准差后,根据正态分布规律随机生成各个学生的各科成绩,并计算每位学生的总分,以此获得一份总的成绩汇总表,主要代码如下。由于这部分代码较为冗长且不是主要部分,感兴趣的朋友可以点击源码查看。

class_name, student_num = generate_class() # 生成班级信息
all_num = students_sum(student_num) # 生成全校学生总数
student_name_group = generate_student_name(all_num) # 生成全校学生名字
student_info = init_table(class_name, student_num, student_name_group) # 将年级、班级、学生信息初始化到表格中
student_list = get_list(all_num, student_info) #生成成绩汇总表
student_list.to_excel('学生成绩表2.xlsx') # 保存成绩表

取数据表的前5个来看,还真像那么回事(所有名字和成绩数据均为python随机生成,如有雷同,纯属巧合)。在生成的成绩表中,一共有3个年级,其中高一26个班,高二27个班,高三个23班,各班学生人数介于55-68人之间,全校一共4619名学生。

为了展现pandas的相较于excel的优越性,在下面的分析中,各部分使用的代码尽量不超过5行。

二、年级分析
2.1 各年级的最低分、最高分、平均分和中位数

为了直观的反映各年级的整体教学情况,

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值