全市考试 — 学校小题情况统计(含名次1/名次2)
适用范围
本SKILL适用于各学段(小学、初中、高中)各学科考试的学校小题得分情况统计。不同学段、不同学科的题目数量、满分、子题结构可能不同,通过修改脚本配置区即可适配。
学段适用示例:
- 小学:语文、数学、英语等
- 初中:语文、数学、英语、物理、化学、生物、地理、历史、道德与法治等
- 高中:物理、化学、生物、地理、历史、政治等
用途
全市考试后(不限学段、不限科目),基于各校各生各小题得分原始表,按学校分组统计各题平均分、得分率、名次1(全部学校排名)、名次2(指定学校内部排名),输出Excel。
已验证科目:物理(16题41校,含8校名次2)、地理(25题44校,含8校名次2)。
触发词
"学校统计"、"全市学校统计"、"学校小题统计"、"做学校统计"
统计口径(已验证)
- 平均分:各学校所有学生在该题得分的算术平均
- 得分率:平均分 / 该题满分
- 名次1:按平均分从高到低,在数据中所有学校之间排名,同分同名次(跳过后续名次)
- 名次2:按平均分从高到低,仅在RANK2_SCHOOLS指定的学校之间排名,同分同名次;非指定学校名次2留空
- 学校排序:按拼音(带声调,TONE3模式)排序,等价于Excel中文排序
名次2说明
名次2用于在指定学校子集内部排名,例如某市8所学校内部排名:
- 学校列表由RANK2_SCHOOLS配置项指定
- 非指定学校的名次2单元格留空
- RANK2_SCHOOLS为空列表时,不输出名次2列(回退到仅名次1模式)
各题满分设定
每次考试满分可能不同,必须向用户确认各题满分后再修改脚本中 FULL_MARKS。
历史记录(按学段、学科分类):
高中
物理
- 2026-07-31 泰兴市物理(16题):题1~11各4, 题12=15, 题13=6, 题14=8, 题15=12, 题16=15
- 2026-08-01 泰州一模物理(16题):同上
地理
- 2026-08-01 泰州二模地理(25题):题1~22各2, 题23=20, 题24=18, 题25=18
原始数据格式
每行一个学生,列结构:
- 姓名, 班级, 学校
- 总分, 客观分, 主观分
- 第1题~第N题(含子题,视题目结构而定)
注意:不同考试的列名可能不同(如"科目总分"vs"总分"、"第1题"vs"题1"),需通过 COLUMN_MAP 适配。
输出格式
- Col 1: 序号
- Col 2: 学校
- 总分/客观分/主观分: 各3列(平均分, 名次1, 名次2)
- 无子题的题目: 每题4列(平均分, 得分率, 名次1, 名次2)
- 有子题的题目: 每题4列(平均分, 得分率, 名次1, 名次2)+ 子题平均分列
列数随题目数量变化,例如:物理16题=90列,地理25题=122列。
输出样式
- 表头: 宋体 11pt 加粗, 居中, thin边框
- 序号/学校列: 宋体 11pt 加粗, 居中, thin边框
- 数据列: Times New Roman 11pt, 居中, thin边框
- 平均分格式:
0.00_);\(0.00\)(2位小数) - 得分率格式:
0.0%(1位小数百分比) - 名次格式:
0_);\(0\)(整数) - 行高: 表头22, 数据16
- 列宽: B(学校)=11.625, C(总分)=7.0, 其余默认
- 无合并单元格
使用方法
# Python路径
PYTHON="C:/Users/PC/.workbuddy/binaries/python/envs/default/Scripts/python.exe"
# 运行(学校按拼音自动排序)
"$PYTHON" school_stats.py "<原始数据文件>" "<输出文件>"
# 运行(指定学校顺序,可选)
"$PYTHON" school_stats.py "<原始数据文件>" "<输出文件>" "学校A,学校B,学校C"
适配新考试需修改
脚本配置区八项配置:
- COLUMN_MAP — 原始列名→内部标准名映射(当列名不同时修改)
- FULL_MARKS — 各题满分设定
- NUM_COLS — 原始数据中的数值列名列表(内部标准名)
- RATE_COLS — 需要计算得分率的题目
- SIMPLE_Q — 无子题的题号列表
- SUB_Q_INFO — 有子题的题目配置:(题号, 子题列表)
- RANK2_SCHOOLS — 名次2排名学校列表(为空则不输出名次2列)
- SCHOOL_ORDER — 学校排列顺序(留空则按拼音排序)
验证结果
- 物理16题41校:与模版逐项对比,3690个单元格0差异,格式完全一致
- 地理25题44校:25题得分率全部正确,客观分+主观分=总分零误差
依赖
- openpyxl
- pypinyin(用于拼音排序;未安装时回退GBK编码排序)
文件位置
- 脚本:
~/.workbuddy/skills/physics-school-stats/school_stats.py - SKILL说明:
~/.workbuddy/skills/physics-school-stats/SKILL.md
注意事项
- 每次执行前必须确认各题满分和题目结构,不同学段、不同学科、不同考试可能不同
- 不同学段差异:小学可能无解答题子题结构,初高中可能有复杂子题;题目数量、满分分配差异大,全部通过配置区适配,脚本逻辑无需修改
- 学校数因考试范围不同而变化(物理41校、地理44校等)
微信扫一扫