跳到正文
显示本页目录

正在生成目录…

数据处理详细计划(Data Processing Plan)

配合 survey_v1.2.md 使用(问卷已含 Q8b / Q9b / Q9c / Q9d)
日期:2026-04-24(V1.2 同步:2026-05-04) | 目标有效样本量:200 份(低于此则宽 CI,适合方向性解读)


一、数据回收与清洗

1.1 数据导出

从飞书问卷导出 Excel/CSV 文件,每行一个受访者。规范字段编码(分析脚本中使用的英文名)如下;飞书实际列名多为中文题干,需先经列映射表对齐(仓库内 tools/survey_pipeline/mapping.yaml)。

grade, activities, idea_freq, scene, action, outcome,
connection_exp, pain_level, opportunity_cost, current_tools,
external_capture, pain_points, review_habit, browse_pref,
accumulation_value, ai_value, feature_pref, intent, email, open_feedback

多选题在导出中的分隔:飞书当前导出为 英文逗号 + 空格(, 连接各完整选项;选项内部若含「,」不受影响。解析实现见 tools/survey_pipeline/encode.py

1.2 无效数据剔除规则

剔除条件原因检测方法
填写时间 < 45秒未认真阅读飞书导出的时间戳字段计算差值
填写时间 > 30分钟可能中途离开导致数据不可靠同上
全部单选题选同一位置规律性作答(直线型)检查所有单选答案是否选项位置完全一致
Q2一个都没选逻辑矛盾(必填题)字段为空检查

1.3 多选题数据拆解

多选题(Q2, Q8, Q9, Q9c, Q11)需要拆成独立二值列:

# 示例:Q2 活动类型拆解
activities_list = [
    'act_paper',      # 写课程论文
    'act_video',      # 做短视频/自媒体
    'act_novel',      # 写小说/剧本
    'act_art',        # 设计/绘画/摄影
    'act_competition', # 参加比赛
    'act_research',   # 科研/论文
    'act_ip',         # 经营IP/品牌
    'act_chat',       # 日常讨论
    'act_browse',     # 刷视频产生灵感
    'act_music',      # 写歌/作曲
    'act_other'       # 其他
]
# 每列值为 0 或 1

1.4 序数编码

字段编码规则
idea_freq几乎每天=4, 每周好几次=3, 偶尔=2, 很少=1
pain_level影响了项目=3, 挺可惜=2, 无所谓=1, 没想过=0
ai_value非常有帮助=4, 可以试试=3, 不确定=2, 没什么用=1
intent立刻下载=4, 有空看看=3, 先观望=2, 不需要=1
external_capture加上批注=4, 经常保存=3, 偶尔保存=2, 很少=1
review_habit定期回顾=4, 偶尔翻到=3, 几乎不看=2, 想看找不到=1

1.5 派生变量计算

派生变量计算规则用途
has_painQ7 ∈ {可惜, 影响了项目} → 1, 否则 → 0二值化痛苦程度
is_creatorQ2 选了 小说/自媒体/设计/IP/音乐 中任一 → 1识别创作型用户
is_academicQ2 选了 论文/科研/比赛 中任一 → 1识别学术型用户
unrecordedQ5 ∈ {没记录, 忘了} → 1识别未被满足用户
idea_deadQ6 ∈ {没深入, 没打开看, 想不起来} → 1灵感死亡率
has_emailQ13 不为空 → 1邮箱留存标记
high_intentQ12 = 立刻下载 → 1高意向用户标记
is_collectorQ8b ∈ {经常保存, 加上批注} → 1识别内容收集型用户(V1.2)
has_review_needQ9b ∈ {定期回顾, 想看但找不到} → 1识别有回顾需求的用户(V1.2)
prefers_timelineQ9c 选了"按时间线翻看" → 1时间线视图需求(V1.2)
prefers_ai_remindQ9c 选了"AI帮我推荐" → 1AI 主动推送需求(V1.2)
prefers_semantic_browseQ9c 选了「相关旧想法自动展示」→ browse_relatedGarden 语义关联视图(V1.2 实现名)
sees_accumulation_valueQ9d ∈ {有过拼图式成果, 想过但做不到} → 1(仅对 Q3 高频路径有定义"复利 / 涌现价值"(V1.2)
feat_local_feat_cloud_conflictQ11 同时命中「本地」与「云同步」→ 1架构决策:默认本地 + 可选同步

条件题报告分母:须在报告中同时给出 N_valid 与条件子样本 n(如 Q7b、Q9d),避免将条件题百分比误用全样本作分母。


二、描述统计分析

2.1 基础频次表(全部题目)

对每道题生成频次表和百分比分布。可在飞书问卷后台直接查看,也可导出后用 Excel 透视表生成。

2.2 核心指标计算

import pandas as pd
import numpy as np

df = pd.read_csv('docs/requirements/analysis_outputs/survey_encoded_clean.csv')  # 清洗编码后(或由 run_all.py 生成)

# ===== 六大核心指标 =====

# 1. 灵感死亡率
idea_dead_rate = df['idea_dead'].mean()

# 2. 痛苦率
pain_rate = df['has_pain'].mean()

# 3. 竞品不满率(Q9不含"没有不满"的比例)
no_complaint = df['pain_points'].str.contains('没有不满')
dissatisfied_rate = 1 - no_complaint.mean()

# 4. AI孵化价值感知率(Q10选前两项)
ai_positive = df['ai_value'].isin([3, 4]).mean()

# 5. 高意向率
high_intent_rate = df['high_intent'].mean()

# 6. 邮箱留存率
email_rate = df['has_email'].mean()

print(f"""
====== 核心指标看板 ======
灵感死亡率:     {idea_dead_rate:.1%}
痛苦率:         {pain_rate:.1%}
竞品不满率:     {dissatisfied_rate:.1%}
AI价值感知率:   {ai_positive:.1%}
高意向率:       {high_intent_rate:.1%}
邮箱留存率:     {email_rate:.1%}
""")

2.4 V1.2 扩展描述指标(报告必含)

指标定义分母
高外部捕获率Q8b 序数量 ∈ {3,4}(经常保存 ∪ 批注)N_valid
回顾需求review_habit 频次表 + has_review_need 比例N_valid
浏览偏好多响应Q9c 各 browse_* slug 命中率N_valid
积累涌现感知Q9d 分布 + sees_accumulation_value仅 Q3 高频且实际作答 Q9d 者
本地∩云矛盾率feat_local_feat_cloud_conflict.mean()N_valid

2.3 置信区间计算

对核心比例指标计算95%置信区间,评估结论的可靠性:

from statsmodels.stats.proportion import proportion_confint

n = len(df)
for name, rate in [('灵感死亡率', idea_dead_rate), 
                    ('痛苦率', pain_rate),
                    ('高意向率', high_intent_rate)]:
    count = int(rate * n)
    ci_low, ci_high = proportion_confint(count, n, alpha=0.05, method='wilson')
    print(f"{name}: {rate:.1%}  95%CI: [{ci_low:.1%}, {ci_high:.1%}]")

# 解读示例:
# 痛苦率: 45.0%  95%CI: [38.2%, 51.8%]
# → 真实痛苦率在38.2%~51.8%之间,下限>30%即可认为需求存在

三、交叉分析与统计检验

3.1 交叉分析一:活动类型 × 痛苦程度

假设:创作型用户比非创作型用户更痛苦。

from scipy.stats import chi2_contingency

# 构建列联表
ct = pd.crosstab(df['is_creator'], df['has_pain'])
print("列联表:")
print(ct)

# 卡方检验
chi2, p, dof, expected = chi2_contingency(ct)
print(f"\nχ² = {chi2:.3f}, p = {p:.4f}, df = {dof}")

if p < 0.05:
    print("✅ 显著:创作型用户的痛苦程度与非创作型有显著差异")
else:
    print("⚠️ 不显著:两组痛苦程度无显著差异")

# 效应量(Cramér's V)
import math
n_total = ct.sum().sum()
cramers_v = math.sqrt(chi2 / (n_total * (min(ct.shape) - 1)))
print(f"Cramér's V = {cramers_v:.3f}")
# V < 0.1 弱, 0.1-0.3 中等, > 0.3 强

3.2 交叉分析二:灵感频率 × 使用意向

假设:灵感越频繁的用户,使用意向越高。

from scipy.stats import spearmanr

# Spearman秩相关(两个序数变量)
corr, p = spearmanr(df['idea_freq'], df['intent'])
print(f"Spearman r = {corr:.3f}, p = {p:.4f}")

# 解读:
# r > 0.3 且 p < 0.05 → 正相关显著,高频用户更愿意使用
# r < 0.1 → 无相关,灵感频率不影响使用意向

3.3 交叉分析三:痛苦程度 × 使用意向

假设:越痛苦的用户越愿意立刻下载。

corr, p = spearmanr(df['pain_level'], df['intent'])
print(f"痛苦程度 × 使用意向: r = {corr:.3f}, p = {p:.4f}")

3.4 交叉分析四:用户类型 × 功能偏好

找出不同活动类型的用户分别最在意什么功能:

# 对每个活动类型,统计功能偏好分布
features = ['feat_speed', 'feat_ai', 'feat_link', 'feat_local', 
            'feat_cloud', 'feat_widget', 'feat_minimal', 
            'feat_action', 'feat_voice']

for user_type in ['is_creator', 'is_academic']:
    subset = df[df[user_type] == 1]
    print(f"\n=== {user_type} 用户功能偏好 ===")
    for feat in features:
        print(f"  {feat}: {subset[feat].mean():.1%}")

3.5(V1.2)外部捕获 × 使用意向

corr, p = spearmanr(df['external_capture_ord'], df['intent_ord'])
# 验证「保存外部启发内容」动机与下载意向是否同向

3.6 Q11互斥检测:本地 vs 云同步

# 检测同时选了"本地"和"云同步"的矛盾样本
conflict = df[(df['feat_local'] == 1) & (df['feat_cloud'] == 1)]
conflict_rate = len(conflict) / len(df)
print(f"本地/云端矛盾样本: {len(conflict)}份 ({conflict_rate:.1%})")

if conflict_rate > 0.15:
    print("⚠️ 超过15%用户选择矛盾,说明用户自己也未想清楚")
    print("→ 产品策略建议:默认本地,可选云同步")

四、多响应分析(多选题专用)

多选题不能直接用卡方检验(因为每个人可以多选),需要用多响应频次分析

# Q9 痛点多选分析
pain_cols = ['pp_friction', 'pp_no_review', 'pp_scattered', 
             'pp_cant_find', 'pp_no_develop', 'pp_privacy', 'pp_none']

pain_summary = df[pain_cols].sum().sort_values(ascending=False)
pain_pct = pain_summary / len(df) * 100

print("=== 痛点排名(可多选) ===")
for name, pct in pain_pct.items():
    bar = '█' * int(pct / 2)
    print(f"  {name:20s} {pct:5.1f}% {bar}")

五、高意向用户画像分析

从数据中提取最有价值的用户群像:

# 筛选高意向用户(Q12=立刻下载 且 Q7=有痛感)
vip = df[(df['high_intent'] == 1) & (df['has_pain'] == 1)]

print(f"高意向+高痛感用户: {len(vip)}人 ({len(vip)/len(df):.1%})")
print(f"\n年级分布:")
print(vip['grade'].value_counts(normalize=True).map('{:.1%}'.format))
print(f"\n活动类型分布:")
for col in activities_list:
    if col in vip.columns:
        print(f"  {col}: {vip[col].mean():.1%}")
print(f"\n功能偏好TOP3:")
feat_rank = vip[features].mean().sort_values(ascending=False).head(3)
for feat, pct in feat_rank.items():
    print(f"  {feat}: {pct:.1%}")

六、决策矩阵:数据→产品判断

6.1 总决策流程图

Step 1: 灵感死亡率 > 60%?
├── 是 → 痛点存在,继续
└── 否 → ⚠️ 重新审视"灵感丢失"是否是真问题

Step 2: 痛苦率 > 35%?
├── 是 → 需求够强,继续
└── 否 → 考虑聚焦到子群体(看交叉分析哪类用户最痛)

Step 3: AI价值感知 > 50%?
├── 是 → AI孵化方向可行
└── 否 → 需要重新设计"孵化"的表达方式或价值主张

Step 4: 高意向率 > 20%?
├── 是 → ✅ 可以开始做MVP
└── 否 → 产品吸引力不够,回到价值主张

Step 5: 看功能偏好排名 → 决定MVP优先做什么
Step 6: 看本地vs云端选择 → 决定技术架构
Step 7: 看Q6b关联体验 → 决定"语义关联"功能的优先级
Step 8: 看Q7b机会成本 → 为策划文档准备数据弹药

6.2 数据→策划文档的转化示例

调研报告中可以这样写:

"我们调研了XXX名在校大学生,发现:

  • XX% 的人承认灵感在记录后没有被继续发展
  • XX% 的人对此感到遗憾,其中 XX% 认为丢失的灵感本可以变成项目或作品
  • 最常用的记录方式是手机备忘录(XX%),但 XX% 的用户表示「记了就不会再看」
  • XX% 的受访者认为AI即时反馈对他们有帮助
  • 用户最看重的三个特性依次是:①XX ②XX ③XX
  • XX% 的人表示愿意立刻试用这样的工具,XX人主动留下了内测邮箱"

七、分析工具与环境搭建

7.1 推荐方案

方案A(最简单):
飞书问卷后台 → 看基础分布
导出Excel → 手动做交叉表
适合:只要描述统计,不做检验

方案B(推荐):
飞书导出 → Python脚本处理
依赖:pandas, scipy, statsmodels, matplotlib
适合:完整分析+可复现+可出图

方案C(零代码替代):
飞书导出 → SPSSAU.com(在线统计工具)
适合:不想写代码但需要检验结果

7.2 Python环境安装

pip install pandas openpyxl scipy statsmodels matplotlib seaborn

7.3 完整分析脚本模板

数据回收后,我可以直接生成一份完整的Python分析脚本,输入Excel文件即输出:

  1. 核心指标看板(含置信区间)
  2. 全部交叉分析(含卡方/Spearman检验)
  3. 多响应频次图
  4. 高意向用户画像
  5. 可视化图表(柱状图+热力图)

可复现流水线(已实现):在仓库根目录执行 python tools/survey_pipeline/run_all.py,产出 docs/requirements/analysis_outputs/survey_encoded_clean.csvfigures/*.pngsurvey_report_full.md


版本记录

版本日期内容
V1.02026-04-24初始数据分析框架
V1.12026-04-24完整处理计划,含Python代码、决策矩阵、报告模板
V1.22026-05-04对齐 survey_v1.2:飞书列映射、多选分隔说明、扩展 KPI/检验、沉淀 tools/survey_pipeline 与完整报告路径