famou-data-analysis · git:20260316.72e246e · 2026-03-16 · sha256 fa20b26a45b01864
famou-data-analysis git:20260316.72e246eA
Immutable. This exact content is served forever at /api/v1/blob/fa20b26a45b01864.
--- name: famou-data-analysis description: 数据分析技能,用于理解数据、分析数据、制作数据处理流程、汇总数据分析结果。当用户提到"分析数据"、"数据处理"、"数据探索"、"统计分析"、"数据清洗"、"数据汇总"、"制作数据报告"、"理解这份数据"、"看一下这个CSV/Excel/数据集"时,必须使用此技能。即使用户只说"帮我看看这个数据"、"分析一下",只要上下文涉及数据文件或数据集,也应立即触发此技能。如果在FaMou问题定义过程中涉及到数据分析,也需要调用此技能。 --- # 数据分析技能 ## 分析目标 数据分析任务的核心目标是: 1. **理解数据**:搞清楚数据是什么、从哪来、代表什么业务含义,而不仅仅是读取文件 2. **评估数据质量**:识别缺失、重复、异常、格式不一致等问题,判断数据可信度 3. **发现规律与洞察**:通过统计和探索,找出数据中有意义的模式、趋势、异常和关联 4. **制定处理流程**:根据实际数据问题,设计可复现、有依据的清洗和转换方案 5. **汇总结果**:用清晰、有业务价值的语言输出结论,不是堆砌统计数字 --- ## 处理约束 **在分析过程中,始终遵守以下约束:** - **不擅自修改原始数据**:任何清洗或转换操作都要先告知用户,说明原因,再执行 - **不过度假设数据含义**:列名不清晰时,应向用户确认,而不是自行猜测 - **不忽略数据质量问题**:发现异常、缺失、不一致时必须明确标注,不能绕过 - **不强行套用固定流程**:数据格式千差万别,应根据实际情况灵活判断分析路径 - **不脱离用户目标做分析**:始终围绕"用户想解决什么问题"来决定分析深度和方向 --- ## 最佳实践 ### 先理解,再动手 拿到数据后,优先弄清楚背景:数据的业务场景是什么?用户的分析目的是什么?这决定了哪些列重要、什么算"异常"、如何处理缺失值。 ### 用业务语言解释结果 不要只输出统计数字,要解释它们的含义。"均值是 3200"不如"平均订单金额约 3200 元,但中位数仅 1800 元,说明存在少量高额订单拉高了均值"。 ### 数据质量问题要分级处理 - **阻断性问题**(如关键列全为空、主键大量重复):先停下来告知用户,确认后再继续 - **需要决策的问题**(如缺失率高、含义不明的异常值):列出处理方案的利弊,让用户选择 - **轻微问题**(如少量格式不一致、空白字符):可直接处理,但要在报告中记录 ### 处理流程要可解释 每一步操作都要能回答"为什么这样做",例如: - "用中位数填充,因为该列分布右偏,均值受极值影响大" - "删除该列,因为缺失率达 78%,无法有效利用" ### 结论要有数据支撑 每个洞察后面都应该跟上具体数字作为依据,避免主观判断。 ### 环境与工具 - 文件路径:上传的文件在 `/mnt/user-data/uploads/`,输出文件保存到 `/mnt/user-data/outputs/` - 中文数据常见编码问题:优先尝试 `utf-8`,失败则尝试 `gbk` / `gb18030` - 图表中文显示:设置 `matplotlib.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']` - 输出 CSV 供 Excel 打开时,用 `encoding='utf-8-sig'` 防止乱码 --- ## 分析结果汇总格式 无论分析路径如何,最终汇总报告应包含: ``` ## 数据分析报告 ### 数据概况 (数据规模、来源、时间范围、核心字段说明) ### 数据质量 (发现的问题、严重程度、已做处理或待确认事项) ### 核心发现 (3-5 条最重要的洞察,每条附数据支撑) ### 处理流程说明 (对数据做了哪些变换,为什么这样做) ### 后续建议 (数据改进建议、可深入分析的方向) ``` --- ## 示例 以下示例展示了面对不同类型数据时,如何应用上述目标和约束进行分析。 ### 示例 A:电商订单数据分析 **场景**:用户上传一份订单 CSV,列包括订单 ID、下单时间、商品类别、金额、用户城市、支付状态,想了解"销售整体情况"。 **分析思路**: - 先确认时间范围,这是销售分析的基本背景 - 金额列检查是否有负值(退款?录入错误?)、零值(需要业务解释) - 支付状态的分布决定"有效订单"的口径 - 按时间聚合看趋势,按类别和城市看构成 **质量问题处理示例**: > 发现"金额"列有 12 行为负值。在销售数据中,负值通常代表退款记录。建议:若分析销售额,过滤掉负值;若分析净收入,需要保留。请确认分析目标后再处理。 **核心发现示例**: > - 3 月销售额环比增长 34%,主要由"家电"品类驱动(贡献增量的 61%) > - 北京和上海合计占全部订单量的 47%,但客单价低于二线城市均值 15% > - 支付失败率为 8.3%,高于行业参考值(通常 2-5%),建议排查支付链路 --- ### 示例 B:结构混乱的调查问卷数据 **场景**:用户上传一份 Excel,多个 Sheet,列名不统一(有的叫"Q1",有的叫"第一题"),部分单元格合并,有空行空列。 **首要步骤**:不急于分析,先向用户说明数据结构问题: > 这份文件包含 3 个 Sheet,结构存在以下问题需要先确认: > 1. Sheet1 和 Sheet2 的列名不一致,是同一份问卷的不同批次,还是不同问卷? > 2. 第 5-8 行为空行,是否可以删除? > 3. "Q3_其他"列 92% 为空,是开放题填写率低,还是导出时出了问题? > > 确认后我来制定清洗方案。 **体现约束**:这里不假设列名含义,不擅自合并 Sheet,先暴露问题等用户确认。 --- ### 示例 C:用户要求"清洗数据并输出处理后的文件" **处理流程文档示例**(随输出文件一起提供): ``` 数据处理流程记录 原始文件:sales_2024.csv(8,412 行 × 15 列) 处理后文件:sales_2024_cleaned.csv(8,203 行 × 13 列) 变更说明: 1. 删除重复行:移除 89 行完全重复记录 2. 删除"备注2"列:缺失率 96%,无有效信息 3. 删除"内部编码"列:用户确认该列不参与分析 4. 金额列格式统一:将"¥1,200.00"格式转为数值 1200.0(共 203 行受影响) 5. 日期列标准化:统一转为 YYYY-MM-DD 格式(原始混有 MM/DD/YYYY 和中文日期两种格式) 6. 缺失值处理: - "城市"列 34 行缺失 → 填入"未知"(用户确认) - "金额"列 86 行缺失 → 保留为空(用户确认这批订单为异常记录,不填充) ```