数据分析报告生成器 (Data Analysis Reporter)
一、核心使命
从原始数据(CSV、JSON、数据库导出)自动生成结构清晰、洞察明确、可执行的数据分析报告。
判断生成成功的唯一标准:决策者读完报告后,能准确理解数据现状、识别关键问题、明确下一步行动,无需再追问数据细节。
本 Skill 反对"数据堆砌"和"图表炫技",坚持数据 → 洞察 → 行动的递进逻辑。
二、五阶段处理流程
阶段 1:数据理解 (Data Understanding)
对输入数据进行全量扫描,理解数据结构和质量。
1.1 数据结构识别:
| 识别维度 | 识别方法 | 输出字段 |
|---------|---------|---------|
| 数据规模 | 行数、列数 | row_count、column_count |
| 字段类型 | 推断每列数据类型 | numeric、categorical、datetime、text |
| 字段含义 | 字段名 + 抽样值推断业务含义 | field_meaning |
| 时间范围 | 时间字段 min/max | date_range |
| 主键/唯一键 | 唯一值数 = 行数 | primary_key |
| 缺失情况 | 每列缺失率 | missing_rate |
| 重复情况 | 重复行数 | duplicate_count |
可调用 scripts/analyze.py --overview <file> 辅助分析。
1.2 数据质量评估决策表:
| 质量维度 | 优秀 | 合格 | 警告 | 危险 | |---------|------|------|------|------| | 缺失率 | < 5% | 5-15% | 15-30% | > 30% | | 重复率 | < 1% | 1-3% | 3-5% | > 5% | | 异常值占比 | < 1% | 1-3% | 3-5% | > 5% | | 一致性 | 100% | > 95% | 90-95% | < 90% | | 时效性 | 当天 | 1 周内 | 1 月内 | > 1 月 |
1.3 数据类型推断规则:
| 字段特征 | 推断类型 | 处理方式 | |---------|---------|---------| | 全为数字(含小数) | 数值型 | 数值统计 | | 全为整数且唯一值<20 | 类别型(可能是) | 频次统计 | | 符合日期格式 | 时间型 | 时间序列 | | 文本且唯一值多 | 文本型 | 词频/摘要 | | True/False、0/1 | 布尔型 | 占比统计 |
阶段 2:统计描述 (Statistical Description)
对数值字段计算描述性统计,对类别字段计算频次分布。
2.1 数值字段统计:
| 统计量 | 含义 | 用途 | |-------|------|------| | count | 非空数 | 数据完整性 | | mean | 均值 | 集中趋势 | | median | 中位数 | 集中趋势(抗异常值) | | mode | 众数 | 最常见值 | | std | 标准差 | 离散程度 | | min | 最小值 | 数据范围 | | max | 最大值 | 数据范围 | | p25 / p50 / p75 | 分位数 | 分布形态 | | skew | 偏度 | 分布对称性 | | kurt | 峰度 | 分布尖锐度 |
2.2 类别字段统计:
| 统计量 | 含义 | |-------|------| | unique | 唯一值数 | | top | 最常见值 | | freq | 最常见值频次 | | 各类别占比 | 分布情况 |
2.3 分布形态判断决策表:
| 偏度 | 形态 | 解读 | 可视化建议 | |------|------|------|-----------| | skew ≈ 0 | 对称 | 正态分布 | 直方图 + 正态曲线 | | skew > 1 | 右偏 | 少数高值拉高均值 | 箱线图 + 对数轴 | | skew < -1 | 左偏 | 少数低值拉低均值 | 箱线图 | | 峰度 > 3 | 尖峰 | 数据集中在均值附近 | 直方图 | | 峰度 < 3 | 平峰 | 数据分散 | 直方图 |
可调用 scripts/analyze.py --stats <file> 输出统计摘要。
阶段 3:趋势识别 (Trend Identification)
对时间序列数据,识别趋势、周期、突变。
3.1 趋势类型识别:
| 趋势类型 | 识别方法 | 业务含义 | |---------|---------|---------| | 长期趋势 | 线性回归斜率 | 整体走向 | | 周期性 | 自相关、FFT | 季节、周内规律 | | 突变点 | 滑动窗口均值差异 | 事件影响 | | 季节性 | 同期对比(同比/环比) | 周期波动 | | 噪声 | 残差分析 | 随机波动 |
3.2 同比环比计算决策表:
| 对比类型 | 计算方法 | 适用 | |---------|---------|------| | 环比 (MoM) | (本期-上期)/上期 | 月度数据 | | 同比 (YoY) | (本期-去年同期)/去年同期 | 年度数据 | | 周环比 (WoW) | (本周-上周)/上周 | 周数据 | | 日环比 (DoD) | (今日-昨日)/昨日 | 日数据 |
3.3 趋势解读规则:
| 变化幅度 | 解读 | 报告措辞 | |---------|------|---------| | > +50% | 暴涨 | "显著增长" | | +20% ~ +50% | 大幅增长 | "明显提升" | | +5% ~ +20% | 增长 | "稳步增长" | | -5% ~ +5% | 持平 | "保持稳定" | | -5% ~ -20% | 下降 | "有所下滑" | | -20% ~ -50% | 大幅下降 | "明显下降" | | < -50% | 暴跌 | "显著下滑" |
阶段 4:异常检测 (Anomaly Detection)
识别数据中的异常点,分为点异常、上下文异常、集合异常。
4.1 异常检测方法决策表:
| 方法 | 适用 | 检测原理 | 优缺点 | |------|------|---------|-------| | 3σ 准则 | 正态分布 | 偏离均值 3 个标准差 | 简单,仅适用正态 | | IQR 方法 | 任意分布 | 超出 [Q1-1.5IQR, Q3+1.5IQR] | 稳健,推荐 | | Z-score | 正态分布 | |z| > 3 | 类似 3σ | | 滑动窗口 | 时间序列 | 偏离局部均值 | 检测突变点 | | 同比异常 | 时间序列 | 偏离去年同期 | 检测季节性异常 | | 箱线图 | 任意分布 | 视觉识别 | 直观 |
4.2 异常分类与处置:
| 异常类型 | 可能原因 | 处置方式 | |---------|---------|---------| | 数据错误 | 采集错误、录入错误 | 标记并剔除 | | 业务事件 | 活动、促销、事故 | 解释原因 | | 系统故障 | 服务中断、bug | 排查并修复 | | 真实异常 | 业务真实波动 | 深入分析 | | 外部影响 | 节假日、政策、竞品 | 关联分析 |
4.3 异常报告格式:
异常点:2026-07-15 销售额 = 850 万
- 正常范围:[120, 180] 万
- 偏离程度:+394%(超出 3σ)
- 可能原因:双 11 大促(业务事件)
- 影响:单日销售额创历史新高
- 建议:剔除该异常点后重新分析趋势
阶段 5:报告生成 (Report Generation)
根据分析目的选择模板(详见 references/report-templates.md),生成结构化报告。
5.1 报告骨架:
# {报告标题}
## 执行摘要
(200 字内,核心发现 + 关键建议)
## 数据说明
- 数据来源:
- 时间范围:
- 数据规模:
- 数据质量:
## 核心指标
| 指标 | 本期 | 上期 | 环比 | 同比 |
|------|------|------|------|------|
## 详细分析
### 分析维度一:{dimension}
- 发现:
- 数据:
- 洞察:
### 分析维度二:{dimension}
...
## 异常与风险
- 异常点 1:...
- 风险提示:...
## 结论与建议
### 结论
1. ...
2. ...
### 建议
1. [短期] ...
2. [中期] ...
3. [长期] ...
## 附录
- 数据明细表
- 可视化建议(详见 visualization-guide.md)
5.2 报告类型决策表:
| 报告类型 | 适用场景 | 核心章节 | 详略程度 | |---------|---------|---------|---------| | 销售分析 | 销售、营收 | 业绩、渠道、产品 | 详细 | | 用户行为 | 用户、流量 | 漏斗、留存、画像 | 详细 | | 运营周报 | 日常运营 | KPI、进展、问题 | 简洁 | | 财务月报 | 财务 | 收入、成本、利润 | 详细 | | A/B 测试 | 实验分析 | 假设、结果、显著性 | 严谨 |
三、核心决策表
决策表 A:分析维度选择
| 数据特征 | 推荐分析维度 | |---------|------------| | 含时间字段 | 时间趋势、同比环比 | | 含类别字段 | 分组对比、占比分析 | | 含数值字段 | 分布、相关、回归 | | 含用户 ID | 留存、漏斗、画像 | | 含地理位置 | 区域分布、热力图 | | 含渠道字段 | 渠道对比、归因 |
决策表 B:可视化图表选择
| 分析目的 | 推荐图表 | 详见 | |---------|---------|------| | 趋势变化 | 折线图、面积图 | visualization-guide.md | | 对比差异 | 柱状图、条形图 | | | 占比分布 | 饼图、环形图、堆叠柱 | | | 相关关系 | 散点图、气泡图 | | | 分布形态 | 直方图、箱线图 | | | 转化流程 | 漏斗图 | | | 地理位置 | 地图、热力图 | | | 多维对比 | 雷达图 | |
决策表 C:报告详略程度
| 受众 | 详略 | 重点 | |------|------|------| | 高管 | 极简 | 结论、建议、风险 | | 业务负责人 | 适中 | KPI、趋势、问题 | | 数据团队 | 详细 | 方法、数据、异常 | | 全员 | 简洁 | 亮点、对比 |
四、安全规则(不可逾越)
- 不臆造数据:未在数据中出现的结果一律不得编造
- 不改原始数据:异常值剔除需说明,不得静默修改
- 统计严谨:显著性检验、样本量、置信区间必须标注
- 因果慎断:相关 ≠ 因果,需明确区分
- 样本充分:样本量不足(<30)时明确提示
- 数据脱敏:涉及个人信息的需脱敏处理
- 时间对齐:同比环比需对齐业务日历(如节假日)
- 口径一致:指标定义需明确,避免口径不一致
- 图表诚实:坐标轴不误导、不截断、不从非零开始(除非必要)
- 结论可验证:所有结论需可回溯到数据
五、工作流程
当用户提交数据文件时,按以下步骤执行:
1. 读取数据 → 调用 analyze.py --overview 输出数据概览
2. 数据质量评估 → 标记缺失、重复、异常
3. 调用 analyze.py --stats 输出统计摘要
4. 时间字段 → 趋势分析、同比环比
5. 类别字段 → 分组对比、占比分析
6. 数值字段 → 分布、相关性分析
7. 异常检测 → 标记并解释
8. 选择报告模板 → 填充骨架
9. 可视化建议 → 推荐图表类型
10. 输出报告 + 数据附件
输出格式示例:
# 7 月销售数据分析报告
## 执行摘要
7 月销售额 1850 万,环比增长 12.3%,同比增长 28.5%。主力品类 A 贡献 45% 营收。华东区增长最快(+35%)。需关注品类 C 连续 2 个月下滑。
## 数据说明
- 数据来源:销售系统导出
- 时间范围:2026-07-01 至 2026-07-31
- 数据规模:12,350 条订单
- 数据质量:缺失率 0.3%,无重复
## 核心指标
| 指标 | 本期 | 上期 | 环比 | 同比 |
|------|------|------|------|------|
| 销售额 | 1850 万 | 1648 万 | +12.3% | +28.5% |
| 订单数 | 12,350 | 11,200 | +10.3% | +22.1% |
| 客单价 | 1498 | 1471 | +1.8% | +5.2% |
## 详细分析
### 品类分析
- 品类 A:832 万(45%),环比 +18%
- 品类 B:520 万(28%),环比 +8%
- 品类 C:320 万(17%),环比 -12%(连续 2 月下滑,需关注)
- 品类 D:178 万(10%),环比 +5%
### 区域分析
- 华东:740 万(40%),环比 +35%(最快)
- 华北:480 万(26%),环比 +5%
- 华南:380 万(21%),环比 +8%
- 其他:250 万(13%),环比 -3%
## 异常与风险
- 异常点:7 月 15 日销售额 850 万(双 11 预热活动)
- 风险:品类 C 连续下滑,需排查原因
## 结论与建议
### 结论
1. 整体销售向好,环比同比双增长
2. 品类 A 是核心增长引擎
3. 品类 C 是潜在风险点
### 建议
1. [短期] 排查品类 C 下滑原因(竞品、价格、库存)
2. [中期] 加大华东区成功经验复制
3. [长期] 优化品类结构,降低对 A 的依赖
## 可视化建议
- 销售趋势:折线图(按日)
- 品类占比:饼图
- 区域对比:柱状图
- 品类 C 趋势:单独折线图(突出下滑)
六、与 analyze.py 脚本的协作
scripts/analyze.py 提供以下命令:
python analyze.py --overview <file>— 数据概览python analyze.py --stats <file>— 统计摘要python analyze.py --trend <file> --date <字段>— 趋势分析python analyze.py --anomalies <file>— 异常检测python analyze.py --report <file> -t sales -o report.md— 生成报告python analyze.py --corr <file>— 相关性分析
支持输入格式:
- CSV(自动识别分隔符)
- JSON(对象数组)
- JSONL(每行一个 JSON)
脚本输出的字段包括:
overview:数据概览(行数、列数、类型、缺失)stats:统计摘要(数值字段)frequency:频次分布(类别字段)trend:趋势分析(时间字段)anomalies:异常点列表correlations:相关系数矩阵
七、特殊场景处理
7.1 小样本数据
- 样本量 < 30:标注"小样本,结论仅供参考"
- 不做显著性检验
- 不做复杂统计推断
- 以描述性统计为主
7.2 缺失值处理
| 缺失率 | 处理方式 | |-------|---------| | < 5% | 直接分析,标注缺失 | | 5-15% | 单独分析缺失分布,可用均值/中位数填充 | | 15-30% | 谨慎分析,明确缺失影响 | | > 30% | 该字段不建议作为主要分析维度 |
7.3 多数据源合并
- 明确各数据源口径
- 关联键一致性检查
- 合并后去重检查
- 时间范围对齐
7.4 实时数据 vs 离线数据
- 实时数据:强调最新状态、短期趋势
- 离线数据:强调历史对比、长期规律
- 注意数据延迟(T+1 等)
7.5 A/B 测试数据
- 明确实验假设
- 检查样本量是否充分
- 检查分流是否均衡
- 计算显著性(p 值、置信区间)
- 关注业务意义而非仅统计意义
八、质量自检清单
每次输出报告前,逐项确认:
- [ ] 数据来源、时间范围、规模已说明
- [ ] 数据质量(缺失、重复、异常)已评估
- [ ] 核心指标有同比/环比对比
- [ ] 趋势分析含变化幅度和解读
- [ ] 异常点已识别并解释
- [ ] 结论有数据支撑
- [ ] 建议具体、可执行、分优先级
- [ ] 可视化建议与数据类型匹配
- [ ] 无臆造数据
- [ ] 统计方法使用正确
- [ ] 样本量、置信区间已标注(如适用)
- [ ] 因果关系谨慎表述
九、与其他 Skill 的协作
- 配合
meeting-notes-generator:会议中讨论的数据分析可生成本报告 - 配合
seo-optimizer:SEO 数据(排名、流量)分析报告 - 配合
email-writer-pro:报告通过邮件发送给相关方
十、版本记录
- v1.0.0:初始版本,建立五阶段流程、决策表、5 种报告模板、可视化指南、分析脚本
Scan to join WeChat group