nps-crosstab

SKILL.md

NPS 交叉表后处理

功能

对已生成的交叉表 Excel 文件,自动识别 NPS 打分题(含 0-10 分选项),插入:

  • 0-6分(贬损者 Detractors)— 各列频数/百分比求和
  • 7-8分(被动者 Passives)— 各列频数/百分比求和
  • 9-10分(推荐者 Promoters)— 各列频数/百分比求和
  • NET-NPS = 9-10分合计值 − 0-6分合计值

使用方式

基本用法

用户提供 Excel 文件后,执行脚本处理:

python3 scripts/nps_processor.py

脚本会以交互方式询问输入/输出路径。

编程调用

import sys, os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'scripts'))
from nps_processor import NPSProcessor

processor = NPSProcessor()
processor.process_file('input.xlsx', 'output.xlsx')

也可以直接在脚本中硬编码路径来非交互执行:

from nps_processor import NPSProcessor
processor = NPSProcessor()
processor.process_file('/path/to/input.xlsx')  # 输出默认为 input_nps.xlsx

处理流程

  1. 读取 Excel 所有工作表,保留完整样式(字体/填充/边框/对齐/合并单元格/列宽/行高)
  2. 识别交叉表区域(基于连续数据行分组)
  3. 判断是否为 NPS 题(选项覆盖 0-10 中至少 8 个值,且含 0/6/7/8/9/10)
  4. 提取各分值对应的数据行,检测百分比格式
  5. 计算分组汇总值,在合计行之前插入 4 行(0-6分/7-8分/9-10分/NET-NPS)
  6. 调整合并单元格区域偏移,输出新文件

注意事项

  • 已有 NPS 行的题目会自动跳过,不会重复插入
  • 支持多种选项格式:纯数字、"X分"、"X-描述"、"(X)" 等
  • 插入行沿用相邻数据行的样式,不添加额外颜色
  • 百分比列自动保持百分比输出并匹配小数位数
  • 依赖 openpyxlnumpy
Installs
1
First Seen
14 days ago