questionnaire-cross-analysis
SKILL.md
问卷交叉分析工具
根据问卷数据和datamap设计文件,生成交叉分析Excel报告。
功能特点
- 支持单选题、多选题、矩阵题(含量表题)、数值填空题的交叉分析
- 自动处理逻辑跳转题目的base计算(按实际答题人数计算百分比)
- 生成四列TOC目录(题目、题型、逻辑设置、base)
- TOC题目带超链接,可跳转到对应表格范围
- 每道题带"Back to TOC"返回链接
- 0值用灰色显示,便于识别
- 支持合计行和列n(base)行
使用方法
命令行调用
python scripts/cross_analysis.py <数据文件.csv> <datamap文件.xlsx> <交叉变量> <输出文件.xlsx>
参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
数据文件.csv |
问卷答题数据(CSV格式) | survey_123.csv |
datamap文件.xlsx |
问卷设计文档(Excel格式) | datamap.xlsx |
交叉变量 |
用于交叉的变量题号 | G5(性别) |
输出文件.xlsx |
生成的Excel报告路径 | output.xlsx |
示例
python scripts/cross_analysis.py survey.csv datamap.xlsx G5 性别交叉分析.xlsx
输入文件要求
数据文件(CSV)
- 标准问卷导出格式
- 每列对应一道题或一个选项(多选题)
- 包含交叉变量列(如G5_您的性别)
- 列名格式:
题号_问题文本(如G6_您的年龄)
datamap文件(Excel)
- 问卷设计文档
- 必须包含列:题目序号、子问题/选项序号、问题及选项、题型、值变量、逻辑设置
- 题型包括:单选题、多选题、矩阵单选题、矩形量表题、填空题等
输出报告格式
TOC 目录页
- 题目:带超链接,点击跳转到概率分布sheet对应题目范围
- 题型:从datamap检索(单选题/多选题/填空题/矩形量表题等)
- 逻辑设置:从datamap检索(关联设置/互斥逻辑设置等)
- base:各题实际答题人数(合计列的列n值)
Banner Tables-概率分布
- 每道题一个表格块
- 格式:选项 × 交叉变量类别 × 合计
- 显示列百分比(基于实际答题人数)
- 包含合计行(100%)和列n行(实际答题人数)
- 包含"Back to TOC"返回链接
支持的题型
| 题型 | 处理方式 |
|---|---|
| 单选题 | 选项文本匹配,计算各选项占比 |
| 多选题 | 每个选项单独计算选择率 |
| 矩阵单选题 | 子题-选项组合,分别计算 |
| 矩形量表题 | 子题名称-选项值格式(如"硬件配置 - 3") |
| 数值填空题 | 统计各数值的分布(如年龄) |
| 文本填空题 | 自动跳过 |
特殊处理
逻辑跳转题目
- 自动识别实际答题人数(非总样本数)
- 百分比基于实际答题人数计算
- 列n行显示实际答题人数
矩阵/量表题
- 格式:
子题名称 - 选项值 - 显示所有选项(包括百分比为0的)
- 支持1-10分量表等特殊格式
数值填空题
- 自动识别数值类型(int64/float64)
- 统计各唯一值的分布
- 显示所有数值(包括0值的)
注意事项
- 确保datamap中的选项文本与CSV中的列名匹配
- 多选题的CSV列名格式应为:
题号_问题:选项 - 交叉变量必须在CSV和datamap中都存在
- 输出Excel文件会被覆盖,请注意备份
- 选项文本中的特殊字符(如
\r)会被保留用于匹配
依赖库
- pandas
- openpyxl
- numpy
安装:
pip install pandas openpyxl numpy