自动化办公 | 根据成绩进行自动评级
今天我们将介绍一个常见的自动化办公需求:根据成绩自动评级。通过这篇文章,我们将介绍如何利用Python进行自动化办公,将表格中的成绩根据预定的规则进行评级,并生成一个新的带评级信息的表格。
需求背景
我们有一个表格,表格内容如下:
班级 | 姓名 | 成绩 |
一班 | 张三 | 95 |
一班 | 李四 | 88 |
一班 | 王五 | 92 |
一班 | 赵六 | 59 |
一班 | 刘七 | 72 |
一班 | 孙八 | 60 |
需要根据成绩将每个学生进行评级,评级规则如下:
- A:成绩大于 90
- B:成绩大于等于 75 且小于 90
- C:成绩大于等于 60 且小于 75
- D:成绩小于 60
目标
通过自动化脚本,将原始表格中的成绩根据以上规则进行评级,并生成一个新的表格,增加评级字段,方便后续分析和统计。
解决方案
1. 技术栈
- Pandas:用于处理和操作表格数据。
- openpyxl:用于读取和写入Excel文件。
- Python:脚本语言,负责实现自动化处理和评级逻辑。
2. 步骤解析
2.1 读取表格
首先,我们需要使用 Pandas 来读取表格中的数据。Pandas 提供了非常方便的函数,可以直接从 Excel 文件中读取数据,并转换为 DataFrame 格式,便于后续操作。
2.2 添加评级字段
根据成绩,使用自定义的函数进行评级。我们可以为每个学生的成绩添加一个新的评级字段。这个操作可以通过 apply()
函数实现,快速批量处理。
2.3 保存新表格
最后,处理完的数据可以保存回新的 Excel 文件。我们可以通过 pandas
将处理后的数据导出为 Excel 文件,或者使用 openpyxl
完成更多定制化操作。
3. 完整代码实现
import pandas as pd# 读取Excel文件
df = pd.read_excel("成绩单.xlsx")# 定义评级函数
def grade(score):if score > 90:return 'A'elif score >= 75:return 'B'elif score >= 60:return 'C'else:return 'D'# 使用apply函数为每个学生添加评级
df['评级'] = df['成绩'].apply(grade)# 保存结果到新的Excel文件
df.to_excel("成绩单_评级.xlsx", index=False)print("处理完成,已保存为 '成绩单_带评级.xlsx'")
4. 代码解析
-
读取 Excel 文件: 我们使用
pd.read_excel()
函数读取原始的成绩表格,并将其存储为一个 Pandas DataFrame 对象。DataFrame
是 Pandas 中用来处理表格数据的核心数据结构。 -
定义评级函数:
grade()
函数根据给定的成绩来返回对应的评级。这个函数的逻辑非常简单,通过一系列if-else
判断来实现。 -
批量应用评级函数: 使用
df['成绩'].apply(grade)
将grade()
函数应用到每一行的“成绩”字段。apply()
方法是 Pandas 中常用的高效批量处理函数。 -
保存新表格:
df.to_excel()
将处理后的 DataFrame 保存为一个新的 Excel 文件。index=False
表示不保存行索引。
5. 处理后的结果
经过自动化处理,原始的表格数据将变成以下格式:
班级 | 姓名 | 成绩 | 评级 |
一班 | 张三 | 95 | A |
一班 | 李四 | 88 | B |
一班 | 王五 | 92 | A |
一班 | 赵六 | 59 | D |
一班 | 刘七 | 72 | C |
一班 | 孙八 | 60 | C |
6. 优化与扩展
6.1 批量处理多个表格
如果你需要对多个 Excel 文件进行相同的处理,只需将读取和处理的部分包装成函数,并传入不同的文件路径即可。可以通过 os
库实现文件遍历,批量处理多个文件。
6.2 自定义评级规则
假设你需要根据不同的情况进行不同的评级,比如更改评分标准或添加额外的条件,修改 grade()
函数即可。这种灵活性使得这个脚本非常适合用于不同的业务需求。
6.3 处理异常情况
在实际应用中,可能会遇到缺失数据或异常成绩(如非数字值、空值等)。你可以在 grade()
函数中添加错误处理逻辑,例如检查成绩是否为有效的数字,并根据需要返回默认的评级(如 D
)。
7. 总结
通过这篇文章,我们展示了如何使用 Python 和 Pandas 完成一个常见的自动化办公需求——根据成绩进行评级。借助 Python 的强大库,我们能够快速读取和处理表格数据,自动化执行评级逻辑,并将处理后的数据导出为新的文件。这种方式不仅减少了人工操作的时间,还提高了处理的准确性和效率。
自动化办公的前景广阔,利用 Python 等编程工具处理数据和完成重复性任务,可以大大提高工作效率,释放更多时间去做创造性工作。如果你也有类似的自动化需求,欢迎通过留言或私信告诉我,我将为你提供免费脚本开发服务!
相关文章:
自动化办公 | 根据成绩进行自动评级
今天我们将介绍一个常见的自动化办公需求:根据成绩自动评级。通过这篇文章,我们将介绍如何利用Python进行自动化办公,将表格中的成绩根据预定的规则进行评级,并生成一个新的带评级信息的表格。 需求背景 我们有一个表格…...

纯血鸿蒙ArkUI线性布局详解
线性布局说明 线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row和Column构建。线性布局是其他布局的基础,其子元素在线性方向上(水平方向和垂直方向)依次排列。线性布局的排列方向由所选容器组…...

小程序组件 —— 22 组件案例 - 轮播区域绘制
这一节我们实现轮播图最外层的盒子,也就是把轮播图的最外层搭好,先不给轮播图添加图片,因为图片属于新的组件,组件里面有一些知识点,需要单独分开讲; 回顾一下,在进行传统网页开发时࿰…...
如何判断一个学术论文是否具有真正的科研价值?ChatGPT如何提供帮助?
目录 1.创新性与学术贡献的超级加分✔ 2.科研过程中的各个环节—从0到1✔ 3.创新性与理论深度的完美结合✔ 4.论证与写作的清晰性✔ 5.数据整理和文献回顾——效率与精准并存✔ 6.创新性要求辅助✔ 总结 宝子们,学术论文写作的旅程是不是感觉像是走进了迷雾森…...
【置顶】测试学习笔记整理
一、测试开发体系介绍 1.软件测试概念 (1)【理论】软件测试基础概念:软件测试概念、作用、原则、对象,软件缺陷、测试用例 (2)【理论】软件开发流程扫盲:敏捷开发(XP、SCRUM&#…...
新浪微博Java开发面试题及参考答案
怎么判断两个链表是否相交?怎么优化? 判断两个链表是否相交可以采用多种方法。 一种方法是使用双指针。首先分别遍历两个链表,得到两个链表的长度。然后让长链表的指针先走两个链表长度差的步数。之后,同时移动两个链表的指针,每次比较两个指针是否指向相同的节点。如果指…...

【SQL Server】教材数据库(1)
1 利用sql建立教材数据库,并定义以下基本表: 学生(学号,年龄,性别,系名) 教材(编号,书名,出版社编号,价格) 订购(学号…...

Windows系统下载、部署Node.js与npm环境的方法
本文介绍在Windows电脑中,下载、安装并配置Node.js环境与npm包管理工具的方法。 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,其允许开发者使用JavaScript编写命令行工具和服务器端脚本。而npm(Node Package Manager)则…...
SQL 总结
SQL 总结 引言 SQL(Structured Query Language,结构化查询语言)是一种用于管理关系数据库管理系统(RDBMS)的标准编程语言。自1974年首次提出以来,SQL已成为数据库领域中不可或缺的一部分。它允许用户执行各种操作,如查询、更新、插入和删除数据库中的数据。本文旨在提…...
设计一个基于Spring Boot开发的电商网站,部署在阿里云上
系统架构设计,包含网络、部署架构等关键信息,要保证系统的高可用。设计中请明确指出使用的产品名称。 为了设计一个基于Spring Boot开发的电商网站系统架构,并确保其高可用性,以下是一个详细的系统架构设计方案,包含网…...

Java jni调用nnom rnn-denoise 降噪
介绍:https://github.com/majianjia/nnom/blob/master/examples/rnn-denoise/README_CN.md 默认提供了一个wav的例子 #include <stdint.h> #include <stdlib.h> #include <stdio.h> #include <math.h> #include <string.h>#include …...
C++软件设计模式之状态模式
在C设计模式中,状态模式(State Pattern)是一种行为设计模式,它允许对象在内部状态改变时改变其行为,使对象看起来似乎修改了其类。状态模式的主要动机、意图和适用场合如下: 动机 在面向对象的设计中&…...
Microsoft Visual Studio中的/MT, /MTd,/MD,/MDd分别是什么意思?
1. /MT,/MTd,/MD,/MDd的含义 /MT,/MTd,/MD,/MDd是 Microsoft Visual C 编译器的运行时库链接选项。它们决定了程序如何链接 C 运行时库(CRT)。具体含义如下: /MT&#x…...

谷粒商城项目125-spring整合high-level-client
新年快乐! 致2025年还在努力学习的你! 你已经很努力了,今晚就让自己好好休息一晚吧! 在后端中选用哪种elasticsearch客户端? elasticsearch可以通过9200或者9300端口进行操作 1)9300:TCP spring-data-elasticsearch:transport-…...

日期时间选择(设置禁用状态)
目录 1.element文档需要 2.禁用所有过去的时间 3.设置指定日期的禁用时间 <template><div class"block"><span class"demonstration">起始日期时刻为 12:00:00</span><el-date-pickerv-model"value1"type"dat…...

基于SpringBoot的题库管理系统的设计与实现(源码+SQL+LW+部署讲解)
文章目录 摘 要1. 第1章 选题背景及研究意义1.1 选题背景1.2 研究意义1.3 论文结构安排 2. 第2章 相关开发技术2.1 前端技术2.2 后端技术2.3 数据库技术 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系统需求分析 4. 第4章 系统概要设计4.1 系统功能模块设计4.2 数据库设计 5.…...
钉钉h5微应用安卓报错error29 ios报错error3 加上报错52013,签名校验失败 (前端)
这两个都是应为 免登报错52013,签名校验失败 用户后端签名使用的url地址和前端访问地址需要严格一致,包括端口号。前端部分可以用alert显示出当前的location.href,后端部分请在签名的时候打印日志。 访问通过反向代理服务器、各种NAT等场景下…...
Vue.js组件开发-客户端如何限制刷新Token次数
在Vue.js组件开发中,限制刷新Token的次数是一个重要的安全措施,可以防止恶意用户或攻击者无限次尝试刷新Token。 客户端限制 在客户端,可以通过Vuex、localStorage或sessionStorage等存储机制来跟踪刷新Token的尝试次数。以下是一个基本的实…...

Linux上安装jdk
在线环境的话,通过命令下载,离线环境的话,组要自行去oracle官网下载后上传 wget --no-check-certificate --no-cookies --header "Cookie: oraclelicenseaccept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jd…...
Ardunio BLE keyboard 库的使用
为了开发一个 ardunio 的蓝牙选歌器,网络上普遍推荐使用: https://github.com/T-vK/ESP32-BLE-Keyboard 结果搞了好几天,就是不行。最后发现,下面两点非常重要: 使用 NimBle-ardunio 库这个库目前是2.1.2 ÿ…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
Easy Excel
Easy Excel 一、依赖引入二、基本使用1. 定义实体类(导入/导出共用)2. 写 Excel3. 读 Excel 三、常用注解说明(完整列表)四、进阶:自定义转换器(Converter) 其它自定义转换器没生效 Easy Excel在…...