当前位置: 首页 > news >正文

【Python学习笔记】Pandas实现Excel质检记录表初审、复核及质检统计

背景:

我有这样一个需要审核的飞书题目表,按日期分成多个sheet,有初审——复核——质检三个环节,这三个环节是不同的同学在作业,并且领到同一个题目的人选是随机的,也就是说,完成一道题的三个人之间完全是没有任何联系。在这里插入图片描述
在这里插入图片描述
我现在需要指定sheet表的范围,统计一段时间内各环节的数据指标:
初审同学,需要统计每个同学的做题总步数,有效做题步数,还有合格率。
复核同学,需要统计每个同学的做题总步数,有效做题步数,还有合格率。
质检同学,需要统计每个质检同学的检查题目数量。一行就是一道题目,所以质检同学只需要看写着他名字的共有几行就可以。

其中,有效做题步数是指质检同学检查后判定为正确的步数,比如一道题共25步,如果质检认为初审同学做对15步,复核同学做对18步,那么初审有效步数 = 15,复核有效步数 = 18.
初审合格率 = 总初审有效步数 / 初审做题总步数;
复核合格率= 总复核有效步数 / 复核做题总步数;

编写代码:

理清上述逻辑之后,下面的工作直接交给GPT:

import pandas as pddef analyze_qc_records(file_path, sheet_names):initial_stats = {}relabel_stats  = {}checker_counts = {}for sheet in sheet_names:df = pd.read_excel(file_path, sheet_name=sheet)for _, row in df.iterrows():# 初审init_name   = row.get('初审同学姓名')  # 取该行“初审同学姓名”,若是空值 (NaN) 则跳过。total_steps = row.get('单题步数', 0) or 0  # 当题目总步数(“单题步数”)缺失或为 NaN 时,设置为 0;否则读取数值。init_valid  = row.get('初审同学单题有效步数', 0) or 0  # 读取该行“初审同学单题有效步数”if pd.notna(init_name):st = initial_stats.setdefault(init_name, {'总步数': 0, '有效步数': 0})  # 用 setdefault 保证 initial_stats[姓名] 一定存在,并初始化为 { '总步数':0, '有效步数':0 }st['总步数']   += total_steps  # 每行累加“总步数”和“有效步数”st['有效步数'] += init_valid# 复核relabel_name  = row.get('复核同学姓名')relabel_valid = row.get('复核同学单题有效步数', 0) or 0if pd.notna(relabel_name):  # 如果不是缺失值st = relabel_stats.setdefault(relabel_name, {'总步数': 0, '有效步数': 0})  # 不管 relabel_name 之前在不在 relabel_stats 字典里,调用 setdefault 后,relabel_stats[relabel_name] 一定存在st['总步数']   += total_steps  # 总步数依然用当行的 total_steps —— 即复核同学也「认定」原题的总步数与初审相同st['有效步数'] += relabel_valid# 质检checker = row.get('质检同学姓名')if pd.notna(checker):  # 每遇到一行有“质检同学姓名”,就让对应姓名的计数 +1checker_counts[checker] = checker_counts.get(checker, 0) + 1# 构建 DataFrame(保留数值合格率)initial_df = pd.DataFrame([{'初审同学姓名': name,'总步数': stats['总步数'],'有效步数': stats['有效步数'],'合格率': stats['有效步数'] / stats['总步数'] if stats['总步数'] else 0}  # 用“有效步数 ÷ 总步数” 得到一个 0–1 之间的小数;若总步数为 0 则直接赋 0,避免除零错误。for name, stats in initial_stats.items()])relabel_df = pd.DataFrame([{'复核同学姓名': name,'总步数': stats['总步数'],'有效步数': stats['有效步数'],'合格率': stats['有效步数'] / stats['总步数'] if stats['总步数'] else 0}for name, stats in relabel_stats.items()])checker_df = pd.DataFrame([{'质检同学姓名': name, '检查题目数': count}for name, count in checker_counts.items()])# 百分比格式化initial_df['合格率'] = initial_df['合格率'].map(lambda x: f"{x:.2%}")relabel_df['合格率'] = relabel_df['合格率'].map(lambda x: f"{x:.2%}")# 排序 初审/复核 按姓名字母序;质检按检查量从高到低。initial_df = initial_df.sort_values(by='初审同学姓名').reset_index(drop=True)relabel_df = relabel_df.sort_values(by='复核同学姓名').reset_index(drop=True)checker_df = checker_df.sort_values(by='检查题目数', ascending=False).reset_index(drop=True)return initial_df, relabel_df, checker_dfif __name__ == '__main__':# 示例:读取文件并指定 sheet 范围file_path = '目录/质检记录.xlsx'xls = pd.ExcelFile(file_path)# 假如想统计第 1 到第 3 张 sheet(索引从 0 开始)selected_sheets = xls.sheet_names[0:3]init_df, relabel_df, checker_df = analyze_qc_records(file_path, selected_sheets)# 打印结果print("初审同学统计:")print(init_df)print("\n复核同学统计:")print(relabel_df)print("\n质检同学统计:")print(checker_df)# 如需导出到 Excel:with pd.ExcelWriter('目录/质检统计结果.xlsx') as writer:init_df.to_excel(writer, sheet_name='初审统计', index=False)relabel_df.to_excel(writer, sheet_name='复核统计', index=False)checker_df.to_excel(writer, sheet_name='质检统计', index=False)print("统计已导出到 质检统计结果.xlsx")

输出结果:

在这里插入图片描述
结果会直接写入XLSX文件保存。
并且初审/复核 按姓名字母序排列;质检按检查量从高到低排序。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
截至目前圆满实现了我的需求,完美!!

需要注意的点&容易困惑的代码片段:

1.飞书必须导出为XLSX

因为CSV没有多个sheet,无法实现跨多张表统计。如果导出成了CSV,你会惊喜地发现只剩下第一张表,后面的数据全丢了。
在这里插入图片描述
下载为CSV的后果…
在这里插入图片描述

2.if pd.notna(relabel_name),pd.notna是什么意思?

pd.notna(…) 的作用:
功能:判断一个值是否 不是 “缺失值”(NaN / None / NaT 等)。

返回:布尔值——如果传入的 relabel_name 既不是 NaN 也不是 None,则返回 True;否则返回 False。

为什么要用:在读取 Excel 时,空单元格会被 Pandas 识别为 NaN。只有当姓名字段确实有值时,才要执行后续的统计操作;如果是空的,就跳过这一行,避免在字典里注册一个空字符串或 NaN 作为键。

示例代码:

import pandas as pdprint(pd.notna("Alice"))   # True,说明 "Alice" 是个有效字符串
print(pd.notna(None))      # False,说明 None 是缺失值
print(pd.notna(float('nan')))  # False,NaN 也是缺失值

这点确实很好用,有的同学填表容易漏项,没有把信息写全,留出一些空值在表里,会导致统计数据出现异常,非常的棘手。

3.dict.setdefault(key, default) 的用法?

所属类型:这是 Python 内置字典 (dict) 的一个方法。

功能:
如果字典中已经有了 key,就直接返回 dict[key];
如果没有 key,就先把 key: default 这对键值对插入字典,然后返回这个 default。

为什么要用:
这样写可以保证:不管 relabel_name 之前在不在 relabel_stats 字典里,调用 setdefault 后,relabel_stats[relabel_name] 一定存在,且是一个形如 {‘总步数’: 0, ‘有效步数’: 0} 的初始结构。

之后就可以安心地做 st[‘总步数’] += total_steps、st[‘有效步数’] += relabel_valid这样步数统计的操作,不用每次都写一大段 “如果 key 不在,就先赋值” 的逻辑

示例代码:

d = {}
x = d.setdefault('张三', {'总步数': 0, '有效步数': 0})
# 这时 d == {'张三': {'总步数': 0, '有效步数': 0}}
# 变量 x 就是 {'总步数': 0, '有效步数': 0}# 再次调用
y = d.setdefault('张三', {'总步数': 100, '有效步数': 50})
# 因为 '张三' 已存在,d 不变,y 仍是原来的 {'总步数': 0, '有效步数': 0}print(d)  # {'张三': {'总步数': 0, '有效步数': 0}}

那么回到我们解决问题的代码:在这里插入图片描述
结合第二点,这段代码的作用是:
先用 pd.notna 确保 relabel_name 真有值。
再用 setdefault 拿到或初始化统计结构,省去了手写“键不存在就先赋值”的繁琐。
最后在 st 上累加步数,就完成了该同学在“初审”或者”复核“环节的统计。
这样写既简洁又安全,不用担心 KeyError 或把空姓名也算进去。

4.for name, stats in initial_stats.items() ])这个stats是什么?

initial_stats 是你在前面遍历所有行时累积的一个字典,形如:

{"张三": {"总步数": 120, "有效步数": 110},"李四": {"总步数": 95,  "有效步数": 90},...
}

initial_stats.items() 会返回一个由 (key, value) 对组成的可迭代对象,这里 key 就是每个同学的姓名,value 就是对应的那个小字典(包含 “总步数” 和 “有效步数” 两个字段)

所以在列表推导里:

for name, stats in initial_stats.items()

name —— 对应同学姓名(例如 “张三”)
stats —— 对应该同学的那个子字典(例如 {“总步数”: 120, “有效步数”: 110})

接下来你就可以用 stats[‘总步数’]、stats[‘有效步数’] 来取出这两个值,计算合格率:

'合格率': stats['有效步数'] / stats['总步数'] if stats['总步数'] else 0

如果觉得 stats 这个名字不直观,也可以任意改成别的,比如 data、counts、vals,逻辑完全一样:它只是“每个同学对应的那份统计数据”的一个变量名。

相关文章:

【Python学习笔记】Pandas实现Excel质检记录表初审、复核及质检统计

背景: 我有这样一个需要审核的飞书题目表,按日期分成多个sheet,有初审——复核——质检三个环节,这三个环节是不同的同学在作业,并且领到同一个题目的人选是随机的,也就是说,完成一道题的三个人…...

Springboot 自动装配原理是什么?SPI 原理又是什么?

1. Spring Boot 自动装配原理 自动装配是 Spring Boot 简化配置的核心机制,其核心思想是根据类路径中的依赖自动配置 Spring 应用。 关键步骤: 启动注解 SpringBootApplication 该注解组合了 EnableAutoConfiguration,用于激活自动配置。 …...

【英语语法】基本句型

目录 前言一:主谓二:主谓宾三:主系表四:主谓双宾五:主谓宾补 前言 英语基本句型是语法体系的基石,以下是英语五大基本句型。 一:主谓 结构:主语 不及物动词 例句: T…...

扫雷-C语言版

C语言扫雷游戏设计(完整版) 游戏背景 扫雷是一款经典的益智类单人电脑游戏,最早出现在1960年代,并在1990年代随着Windows操作系统而广为人知。游戏目标是在不触发任何地雷的情况下,揭开所有非地雷的格子。玩家需要根…...

【C++初阶】--- list容器功能模拟实现

1.什么是list容器 在 C 标准模板库(STL)中,std::list 是一个非常有用的容器,它是双向链表的实现std::list 是一种序列式容器,它允许在序列内的任意位置进行高效的插入和删除操作。与数组和 std::vector 不同&#xff…...

gRPC 介绍及在嵌入式 Linux 下的成功编译及使用详解

gRPC 是一个高性能、开源和通用的 RPC 框架,由 Google 开发。它支持多种编程语言,并且能够运行在不同的环境中,包括嵌入式系统。本文将详细介绍 gRPC,以及如何在嵌入式 Linux 系统下成功编译 gRPC,并结合 protobuf 和 …...

C语言教程(十):C 语言函数详解

一、引言 在 C 语言中,函数是一组执行特定任务的代码块。通过将复杂的程序逻辑划分为多个函数,不仅能提高代码的可读性、可维护性,还便于代码的复用。无论是简单的数学计算,还是复杂的系统操作,函数都发挥着核心作用。…...

力扣刷题-热题100题-第35题(c++、python)

146. LRU 缓存 - 力扣(LeetCode)https://leetcode.cn/problems/lru-cache/?envTypestudy-plan-v2&envIdtop-100-liked 双向链表哈希表 内置函数 对于c有list可以充当双向链表,unordered_map充当哈希表;python有OrderedDic…...

LeetCode算法题(Go语言实现)_52

题目 给你一个下标从 0 开始的整数数组 costs ,其中 costs[i] 是雇佣第 i 位工人的代价。 同时给你两个整数 k 和 candidates 。我们想根据以下规则恰好雇佣 k 位工人: 总共进行 k 轮雇佣,且每一轮恰好雇佣一位工人。 在每一轮雇佣中&#xf…...

基于尚硅谷FreeRTOS视频笔记——13—HAL库和RTOS时钟源问题

RTOS的时钟源就是系统定时器中断,通俗来说就是系统定时器每中断一次,就扫描一次RTOS,查看RTOS中有没有任务的切换。 但是,系统存在一个HAL_Delay()函数,就是使用的系统定时器中断来执行的函数。 当我们在RTOS中&…...

FPGA入门学习Day1——设计一个DDS信号发生器

目录 一、DDS简介 (一)基本原理 (二)主要优势 (三)与传统技术的对比 二、FPGA存储器 (一)ROM波形存储器 (二)RAM随机存取存储器 (三&…...

JavaScript-立即执行函数(Immediately Invoked Function Expression,IIFE)

立即执行函数(Immediately Invoked Function Expression,IIFE)是 JavaScript 里一种很独特的函数,它在定义后会马上执行。下面会详细介绍它的语法、用途、优点以及注意事项。 一、语法 立即执行函数一般有两种常见的语法形式&am…...

【Leetcode 每日一题 - 补卡】2537. 统计好子数组的数目

问题背景 给你一个整数数组 n u m s nums nums 和一个整数 k k k&#xff0c;请你返回 n u m s nums nums 中 好 子数组的数目。 一个子数组 a r r arr arr 如果有 至少 k k k 对下标 ( i , j ) (i, j) (i,j) 满足 i < j i < j i<j 且 a r r [ i ] a r r [ …...

【工具-Krillin AI】视频翻译、配音、语音克隆于一体的一站式视频多语言转换工具~

Krillin AI 是全能型音视频本地化与增强解决工具。这款简约而强大的工具&#xff0c;集音视频翻译、配音、语音克隆于一身&#xff0c;支持横竖屏格式输出&#xff0c;确保在所有主流平台&#xff08;哔哩哔哩&#xff0c;小红书&#xff0c;抖音&#xff0c;视频号&#xff0c…...

常用绑定事件方式有哪几种

绑定事件分为3种&#xff1a; 1、内联模式&#xff1a;将函数名直接作为标签属性的属性值&#xff08;注意&#xff1a;这里是带括号的,不带括号不生效&#xff0c;但是在vue中可以加括号也可以不加括号&#xff0c;如果需要穿参数就加括号&#xff0c;不需要传参数可以不加&am…...

数据结构之BFS广度优先算法(腐烂的苹果)

队列这个数据结构在很多场景下都有使用&#xff0c;比如在实现二叉树的层序遍历&#xff0c;floodfill问题(等等未完成)中&#xff0c;都需要借助队列的先进先出特性&#xff0c;下面给出这几个问题的解法 经典的二叉树的层序遍历 算法图示&#xff0c;以下图所示的二叉树为例…...

linux 学习 1.开始学习

准备学习linux记录一下学习内容&#xff0c;只会包含必要的知识&#xff0c;和部分演示 我采用的系统是Ubuntu24.04 初始掌握 学习首先需要掌握如何查看帮助手册 man man # man 加任何命令可以看具体命令的帮助手册 man mkdir进入手册按 d(down)&#xff1a;往下翻半页u(u…...

Flink-01学习 介绍Flink及上手小项目之词频统计

flink简介 官网 概述&#xff1a; 学习Flink具体包括四个关键概念&#xff1a;流数据的持续处理&#xff0c;事件时间&#xff0c;有状态流处理和状态快照。 Apache Flink 是一个开源的流处理框架&#xff0c;旨在处理批处理和实时数据处理&#xff0c;具有高吞吐量和低延迟的…...

【Linux我做主】探秘gcc/g++和动静态库

TOC Linux编译器gcc/g的使用 github地址 有梦想的电信狗 前言 在软件开发的世界中&#xff0c;编译器如同匠人的工具&#xff0c;将人类可读的代码转化为机器执行的指令。 对于Linux开发者而言&#xff0c;gcc和g是构建C/C程序的核心工具链&#xff0c;掌握它们的原理和使…...

工控系统前端设计(pyqt)

题目源自&#xff1a;白月黑羽的项目实战四-[工控系统前端] 代码已上传至gitcode https://gitcode.com/m0_37662818/Industrial_Control_System_Front_End 心得体会&#xff1a;直接用组态软件或者js吧 项目亮点 tablemodel的使用&#xff0c;绑定了表格和数据风机自定义ite…...

一台 Master 多节点玩转 Kubernetes:sealos 一键部署实践

文章目录 一台 Master 多节点玩转 Kubernetes&#xff1a;sealos 一键部署实践&#x1f517; 参考链接&#x1f310; 部署环境&#x1f4e6; 安装包说明&#x1f527; 前期准备&#x1f680; 使用 sealos 安装 Kubernetes✅ 验证集群状态&#x1f4cc; 后续可做的优化和拓展&am…...

写书的三驾马车

2019年8月19日23:52:28 先亮出我们的兵器组合&#xff1a; GitBook Git Markdown&#xff0c;享受行云流水一般的写作 个人秀 GitBook : 一个基于 Node.js 的文档格式转换工具&#xff0c;支持 Markdown 和 AsciiDoc 两种语法格式&#xff0c;可以输出 HTML、PDF等格式的…...

科学护理进行性核上性麻痹,缓解病痛提升生活质量

进行性核上性麻痹是一种罕见的神经系统变性疾病&#xff0c;患者常出现姿势平衡障碍、吞咽困难、眼球运动异常等症状。通过科学的健康护理&#xff0c;能在一定程度上减轻患者痛苦&#xff0c;提升生活质量。 日常护理&#xff0c;保障安全舒适 患者日常活动时&#xff0c;需确…...

第七章:7.2求方程a*x*x+b*x+c=0的根,用3个函数,分别求当:b*b-4*a*c大于0、等于0和小于0时的根并输出结果。从主函数输入a、b、c的值

//求方程a*x*xb*xc0的根&#xff0c;用3个函数&#xff0c;分别求当&#xff1a;b*b-4*a*c大于0、等于0和小于0时的根并输出结果。 //从主函数输入a、b、c的值 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<math.h> void s1(float a, float b, fl…...

优选算法系列(7.BFS 解决最短路问题)

简介&#xff1a; 先走到A&#xff0c;之后弹出A再把A能走到的地方加进去向外扩展把队列里面的元素&#xff08;B&#xff0c;C&#xff09;弹出来&#xff0c;再把B&#xff0c;C能到的地方入队列 一直这样那么最短路程就是扩展的层数。 迷宫中离入口最近的出口&#xff08;me…...

实现定时发送邮件,以及时间同步

定时发送邮件 部署邮件服务 查看有没有安装mailx,安装了 [root192 ~]# rpm -q mailx mailx-12.5-43.fc38.x86_64去网易拿一下授权码,写到配置文件里 vim /etc/mail.rcset fromxxxxxxx163.com set smtpsmtp.163.com set smtp-auth-userxxxxxxx163.com set smtp-auth-passwor…...

Java反射知识点学习笔记

目录 一、定义 二、获取class对象的三种方式 1、Class.forName("全类名") 2、类名.class 3、对象.getClass() 三、案例 1、获取 class 反射对象三种方式 2、利用反射获取构造方法 3、利用反射获取成员变量 4、利用反射获取成员方法 Java反射是一种强大的编…...

Unity ShaderLab引用HLSL文件找不到其中函数

在写Unity Shader的过程中&#xff0c;常常需要将方法封装到HLSL文件中&#xff0c;今天遇到一个这样的报错&#xff0c; 明明hlsl文件路径引用没问题&#xff0c;却引用不到方法 并且将分散文件中的函数复制过来一切正常&#xff0c;最终定位到HLSL的预编译指令中 这指令的…...

【文献笔记】LLM-based control code generation using image recognition

LLM-based control code generation using image recognition 原文代码 标题翻译&#xff1a;基于图像识别的LLM控制代码生成 1. 内容介绍 1.1. 简介 论文提出了一种基于LLM的新方法&#xff0c;通过图像识别从管道仪表图&#xff08;Piping and Instrumentation Diagrams,…...

算法之贪心算法

贪心算法 贪心算法核心思想常见应用场景典型案例案例一&#xff1a;找零问题案例二&#xff1a;活动选择问题案例三&#xff1a;货仓选址问题 贪心算法的应用详解霍夫曼编码最小生成树Dijkstra最短路径算法 总结 贪心算法 核心思想 贪心算法&#xff08;Greedy Algorithm&…...

从“链主”到“全链”:供应链数字化转型的底层逻辑

1. 制造业与供应链数字化转型的必然性 1.1. 核心概念与战略重要性 制造业的数字化转型&#xff0c;是利用新一代数字技术&#xff08;如工业互联网、人工智能、大数据、云计算、边缘计算等&#xff09;对制造业的整体价值链进行根本性重塑的过程。这不仅涉及技术的应用&#…...

【Windows本地部署n8n工作流自动平台结合内网穿透远程在线访问】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Python中如何加密/解密敏感信息(如用户密码、token)

敏感信息,如用户密码、API密钥、访问令牌(token)、信用卡号以及其他个人身份信息(PII),构成了现代应用程序和系统中最为关键的部分。这些信息一旦被未经授权的第三方获取,可能引发灾难性的后果,从个人隐私泄露到企业经济损失,甚至是大规模的社会安全问题。保护这些敏感…...

Win10如何一键切换IP地址教程

切换IP地址可能对于许多用户来说是一个相对陌生但又可能经常需要进行的操作。无论是出于网络安全、突破网络限制还是仅仅为了测试目的&#xff0c;一键切换IP地址都能带来极大的便利。以下是在 Windows 10 中通过批处理脚本实现一键切换 IP 地址的详细教程&#xff1a; 方法一&…...

2021-11-09 C++三位数平方含有该数

缘由求解&#xff0c;运算函数&#xff0c;哪位大神教一下-编程语言-CSDN问答 void 三位数平方含有该数() {//缘由https://ask.csdn.net/questions/7560152?spm1005.2025.3001.5141int a 100, aa 1000, f 0;while (a < aa){f a*a;while (f > a)if ((f - a) % aa)f …...

高效检测书签网址,告别无效链接烦恼

软件介绍 你是否有过面对浏览器中满满的书签&#xff0c;却不知道哪些网址还“健在”&#xff0c;哪些已经“跑路”的烦恼&#xff1f;别担心&#xff0c;今天就给大家介绍一款神奇的小工具——“网址小卫士”。 检测轻松搞定 还在一个个手动检查书签网址的有效性吗&#xf…...

SpringBoot高校学生评教系统设计实现

概述 基于SpringBoot的高校学生评教系统项目&#xff0c;该系统包含了学生评教、教师管理等功能&#xff0c;适合作为JavaWeb学习项目。 主要内容 1. 学生功能模块 查看评教信息&#xff1a;可以查看学期、院系、任课教师、课程名称等信息评价打分功能&#xff1a;可以对课…...

代码随想录算法训练营第二十天

LeetCode题目: 39. 组合总和40. 组合总和 II131. 分割回文串2176. 统计数组中相等且可以被整除的数对(每日一题) 其他: 今日总结 往期打卡 39. 组合总和 跳转: 39. 组合总和 学习: 代码随想录公开讲解 问题: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 targ…...

C++入门基础:命名空间,缺省参数,函数重载,输入输出

命名空间&#xff1a; C语言是基于C语言的&#xff0c;融入了面向对象编程思想&#xff0c;有了很多有用的库&#xff0c;所以接下来我们将学习C如何优化C语言的不足的。 在C/C语言实践中&#xff0c;在全局作用域中变量&#xff0c;函数&#xff0c;类会有很多&#xff0c;这…...

GPU怎么绑定到服务器上

确认服务器与 GPU 兼容性1&#xff1a;不同的服务器和 GPU 型号连接方式有所不同&#xff0c;要确保所选的 GPU 卡与服务器兼容。可通过服务器和 GPU 的产品文档&#xff0c;或使用服务器厂商提供的兼容性查询工具进行确认。安装前准备&#xff1a;关闭服务器电源&#xff0c;并…...

opencv函数展示2

一、像素操作与算术运算 1.cv2.split() 2. cv2.merge() 3.cv2.add() 4.cv2.bitwise_and() 5.cv2.bitwise_or() 6.cv2.inRange() 二、仿射变换 1.cv2.getRotationMatrix2D() 2.cv2.warpAffine() 3.cv2.flip() 4.cv2.resize() 三、透视变换 1.cv2.getPerspectiveTransform() 2…...

零基础上手Python数据分析 (16):DataFrame 常用统计分析方法

写在前面 —— 超越简单排序,探索数据内在规律,掌握Pandas统计分析基础 上一篇博客,我们学习了如何使用 Pandas 对 DataFrame 进行排序和排名,这使得我们能够更好地组织数据并快速定位关键信息。 然而,仅仅对数据进行排序和排名,还不足以完全理解数据。 要想更深入地解…...

文件系统 软硬连接

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;Linux 目录 一、理解文件系统 &#x1f320;磁盘结构 二、软硬连接 &#x1f31f;软硬链接 &#x1f320;软链接&#xff1a; &#x1f320;硬链接&#xff1a; &#x1f31f;理解软硬链接的应…...

Linux环境基础开发工具使用

本节目标&#xff1a; 1. 学习yum工具&#xff0c;进行软件安装 2. 掌握vim编辑器使用&#xff0c;学会vim的简单配置 3. 掌握gcc/g编译器的使用&#xff0c;并了解其过程&#xff0c;原理 4. 掌握简单gdb使用于调试 5. 掌握简单的Makefile编写&#xff0c;了解其运行思想…...

秘密任务 2.0:如何利用 WebSockets + DTOs 设计实时操作

在之前的文章中&#xff0c;我们探讨了为什么 DTO 是提升 API 效率和安全性的秘密武器。现在&#xff0c;我们进入了一个全新的场景——我们将深入探讨如何通过 WebSockets DTOs 实现实时操作&#xff01; Agent X 正在进行一项高风险的卧底任务。突然&#xff0c;总部更新了…...

LeetCode hot 100—括号生成

题目 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))","(()())","(())()","()(())",&…...

2025.04.17【Dendrogram】生信数据可视化:Dendrogram图表详解

Dendrogram customization Go further with ggraph: edge style, general layout, node features, adding labels, and more. Customized circular dendrogram Learn how to build a circular dendrogram with proper labels. 文章目录 Dendrogram customizationCustomized c…...

SDL基础

SDL SDL&#xff08;Simple DirectMedia Layer&#xff09;是一个开源的跨平台多媒体开发库&#xff0c;主要用于开发需要图形、音频和输入设备支持的应用程序。它使用C语言编写&#xff0c;提供了简单易用的API&#xff0c;**能够帮助开发者快速实现跨平台的多媒体功能。**SD…...

硬件工程师面试常见问题(2)

第六问&#xff1a;你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗? 逻辑电平&#xff1a;是数字电路中用于表示二进制逻辑状态&#xff08;0 和 1&#xff09;的电压或电流信号范围&#xff0c;是数字系统中器件间信号传输的统一标准。 注&#xff1a;逻辑电…...

Python自学第2天:条件语句,循环语句

条件语句 1.条件判断 score 60 if score > 90:print("优秀") elif score > 60:print("及格") else:print("不及格") 注意&#xff1a; 1、每个条件后面要使用冒号 :&#xff0c;表示接下来是满足条件后要执行的语句块。2、使用缩进来划…...