消费者需求挖掘技术实现:Kano模型分析与优先级排序(附Python示例)

📅 2026/8/21 7:44:22
消费者需求挖掘技术实现:Kano模型分析与优先级排序(附Python示例)
一、概述消费者需求挖掘通过Kano模型、痛点分析和JTBD等方法将需求分类并排序优先级。本文从技术角度介绍Kano分类算法和优先级计算。二、Kano模型数据结构2.1 双问法问卷设计每个需求属性设计正向题有功能时态度和反向题无功能时态度各5个选项选项正向题含义反向题含义1喜欢喜欢2理应如此理应如此3无所谓无所谓4勉强接受勉强接受5讨厌讨厌2.2 Kano分类查表# Kano分类对照表kano_table {(1, 1): Q, # 可疑(1, 2): A, # 魅力型(1, 3): A,(1, 4): A,(1, 5): O, # 期望型(2, 1): R, # 反向型(2, 2): Q,(2, 3): I, # 无差异(2, 4): I,(2, 5): M, # 必备型(3, 1): R,(3, 2): I,(3, 3): I,(3, 4): I,(3, 5): M,(4, 1): R,(4, 2): I,(4, 3): I,(4, 4): I,(4, 5): M,(5, 1): R,(5, 2): R,(5, 3): R,(5, 4): R,(5, 5): Q,}# 分类标签labels {M: 必备型, O: 期望型, A: 魅力型, I: 无差异, R: 反向型, Q: 可疑}三、Kano分类实现import pandas as pd df pd.read_excel(kano_survey.xlsx) attributes [fattr_{i} for i in range(1, 21)] # 20个需求属性 results [] for attr in attributes: pos_col f{attr}_pos # 正向题 neg_col f{attr}_neg # 反向题 classifications [] for _, row in df.iterrows(): pos str(row[pos_col]) neg str(row[neg_col]) kano_type kano_table.get((pos, neg), Q) classifications.append(kano_type) # 统计各类占比 from collections import Counter counts Counter(classifications) total len(classifications) # 取占比最大的类型 best_type counts.most_common(1)[0][0] results.append({ attribute: attr, type: best_type, type_label: labels[best_type], M_pct: counts.get(M, 0) / total, O_pct: counts.get(O, 0) / total, A_pct: counts.get(A, 0) / total, I_pct: counts.get(I, 0) / total, }) result_df pd.DataFrame(results) print(result_df[[attribute, type_label, M_pct, O_pct, A_pct]].round(3))四、优先级计算# 需求重要性和满足度来自量表题 priority_df pd.DataFrame({ attribute: attributes, importance: df[[f{a}_imp for a in attributes]].mean().values, satisfaction: df[[f{a}_sat for a in attributes]].mean().values, }) # 优先级 重要性 × (1 - 满足度) priority_df[priority] priority_df[importance] * (1 - priority_df[satisfaction] / 5) priority_df priority_df.sort_values(priority, ascendingFalse) print(需求优先级排序TOP 10:) print(priority_df.head(10).round(3))五、Better-Worse系数# Better (A O) / (A O M I) # Worse -(O M) / (A O M I) for _, r in result_df.iterrows(): total r[M_pct] r[O_pct] r[A_pct] r[I_pct] if total 0: better (r[A_pct] r[O_pct]) / total worse -(r[O_pct] r[M_pct]) / total print(f{r[attribute]}: Better{better:.3f}, Worse{worse:.3f})六、工具推荐工具用途特点91questionKano问卷设计数据采集双问法模板、配额控制、SPSS导出Python (pandas)分类计算优先级排序灵活处理大规模属性Excel基础分析可视化适合少量属性快速分析R统计检验适合学术级分析七、总结需求挖掘的技术关键点1. Kano双问法每个属性15-25对题样本≥4002. 分类查表25种正反组合映射到6类3. 优先级公式重要性 ×1 - 满足度4. Better-Worse系数Better0.5且Worse-0.5为高优先级5. 痛点发现率≥15%为有效挖掘