当用户提供数据文件(CSV / Excel / JSON / TSV)或表格数据,想要做分析、找洞察或要一份报告时使用——例如「分析数据」「做数据报告」「帮我看看这份数据」「这批订单数据说明什么」,以及销售 / 经营 / 运营数据复盘、探索性分析(EDA)、A/B 实验评估、趋势预测,或要一份可交互的 HTML 数据报告。不适用于:搭建 dashboard 应用、网页爬取、连接线上数据库。
Scanned 9/6/2026
Install to Claude Code
npx -y skills add cabbage2000-lab/data-analysis-skills --skill data-analysis-skills --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Data Analysis Skills?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/cabbage2000-lab-data-analysis-skills)More formats (shields.io, HTML) on the badges page.
---
name: data-analysis-skills
description: 当用户提供数据文件(CSV / Excel / JSON / TSV)或表格数据,想要做分析、找洞察或要一份报告时使用——例如「分析数据」「做数据报告」「帮我看看这份数据」「这批订单数据说明什么」,以及销售 / 经营 / 运营数据复盘、探索性分析(EDA)、A/B 实验评估、趋势预测,或要一份可交互的 HTML 数据报告。不适用于:搭建 dashboard 应用、网页爬取、连接线上数据库。
slug: data-analysis-skills
displayName: 数据分析报告·行业化叙事
version: 0.18.3
summary: 给一份数据文件(CSV / Excel / JSON / TSV),交付一份可直接拿去汇报的单文件 HTML 交互式报告——结论先行、每图配解读、处理过程可追溯。内置零售 / SaaS / 自媒体 / 企业财务 / 基金 / 房地产 / 建筑 / 教育等行业视角;统计纪律强制:不杜撰行业基准、相关不当因果、小样本不硬下结论。
---
# data-analysis-skills:行业化数据分析与叙事报告
## 概述
把原始数据变成会自己讲故事的行业化数据报告——交付物不是孤立的图表和数字,而是一份有洞察、有结论、能推动业务决策的分析报告。
```
一次分析 = 五阶段流程(主线)
× 一个行业模版 industries/(分析什么、对谁说)
× 按需加载的方法模块 references/(怎么分析)
→ 数据 JSON 注入 assets/report_template.html → 单文件 HTML 报告
```
支持的输入:CSV、Excel(.xlsx/.xls)、JSON、TSV。**一份输入可能含多个数据集**——一个 Excel 有多个 sheet、一次给过来两个及以上文件、或 JSON 顶层是含多个数组键的 dict;这些走阶段 1 的多源接入(见 `references/data-sources.md`)。分析用 Python 执行(pandas 等;缺依赖先尝试 pip 安装,失败按降级表处理)。
## 首先:任务分流
| 用户要的是什么 | 走哪条路 |
|------|------|
| 开放式分析,想要报告/洞察(「分析这份数据」「给我一份报告」) | **完整五阶段流程**(含阶段 1 门禁),见下文 |
| 单个统计问题(「检验 B 方案是否显著」「算一下这两列的相关性」) | **轻量路径**:直接算出来,回复结果 + 注意事项;不强加行业确认,也不套完整报告流程 |
分流判据:用户点名了具体的统计计算、且没有要整体洞察或报告 → 轻量路径。**拿不准就走完整流程。统计纪律对两条路径一视同仁。**
## 五阶段流程
开工时立即用宿主的任务清单工具(Claude Code 用 TodoWrite、Codex 用 update_plan、其它宿主用各自等价的 plan/todo 工具)为每个阶段建一条 todo,逐阶段推进并更新状态。**宿主没有这类工具,就在开头列一份纯文本的五阶段清单,并在推进时逐次复述进度**——阶段追踪不因为工具缺失就丢掉。阶段 2–5 一气呵成,不再打断用户提问;每个阶段开始时打印一行进度提示。
### 阶段 1:数据接入与理解【唯一的强制门禁】
1. 读取数据并给出画像:行列数、字段类型、缺失情况、时间范围、关键字段的唯一值分布
2. **行业识别**:从字段名、数据特征和用户描述推断所属行业,并自评置信度
3. **多源接入(当输入含 >1 个数据集时)**:一个 Excel 有多个 sheet、一次给过来两个及以上文件、或 JSON 顶层是含多个数组键的 dict,都算多个数据集。**必须枚举出每一个数据源**(全部 sheet 名 / 全部文件 / 全部顶层键),把完整清单摆给用户看,并加载 `references/data-sources.md` 取读取模式与关系矩阵。**绝不允许只读第一个 sheet、只读用户点名的那个文件、或把 JSON 的多个键压成一个**——那会产出一份用户根本看不出它不完整的报告
4. **用户确认(强制门禁)**:以结构化选择题提问——宿主有结构化提问工具就用(如 Claude Code 的 AskUserQuestion);宿主没有、工具不可用、或用户拒绝使用时,改为纯文本编号选择题,并**等到用户回复后才继续**。**降级的只是呈现方式,门禁本身从不降级。** 第一轮里一次问完:
- 行业确认(置信度高 → 给一个确认选项即可;置信度低或字段被脱敏 → 给 3–4 个行业选项,**绝不自行猜定**)
- 分析目标(当用户没讲清想看什么时)
- 报告受众(高管 = 结论先行、少术语 / 分析师 = 保留技术细节)
- 数据口径歧义(当字段含义、单位或统计周期不清楚时)
- **多源关系策略**(当第 3 步适用时):融合(join/concat 成一张表)还是各源独立分析,以及关联键是什么
5. 提问预算:最多 3 轮,每轮最多 3 道选择题;目标是把整个流程所需的问题都压进本阶段的一轮里
**什么情况下可以免问直接进阶段 2**:行业、分析目标、受众三者都能从用户的输入里直接读出来(例如「我是创始人,这是我们 SaaS 三年的经营数据,看增长和留存」)。只要行业还没得到用户确认,就必须问——**数据看起来像零售 ≠ 用户确认了按零售解读**。
**为什么这个门禁不能跳过**:跳过确认,等于你替用户定了分析议程、行业叙事和受众风格。基线测试里模型以「先交付完整 EDA 才是专业默认动作,反问会阻塞用户」为由跳过提问,产出了一份用户可能根本不想要的中性分析。一轮选择题只花用户几十秒;方向错了则整个分析全废。下面这些借口都不成立:
| 跳过的借口 | 事实 |
|------|------|
| 「先交付价值,反问会阻塞用户」 | 一轮选择题 ≪ 一份方向错的报告。门禁是硬要求 |
| 「字段语义很清楚,不用确认」 | 字段清楚 ≠ 行业已确认 + 目标已明确。议程不由你替用户定 |
| 「EDA 不依赖业务语义,先做了再说」 | 没有行业和目标的 EDA 就是一堆中性数字——恰恰站在本 skill 的核心定位的反面 |
| 「用户发现问题自然会说」 | 确认必须前置;报告发出去之后再纠偏是代价最高的路 |
确认落定后选行业模版:有对应模版(见下方映射表)→ 加载它;行业能识别但没有对应模版 → `industries/general.md` + 把行业术语注入叙事;识别不出 / 用户否掉了猜测又没点名行业 → `industries/general.md`,叙事保持行业中立。
### 阶段 2:数据清洗
- 缺失值:按缺失比例和字段性质选择删除/填充/标记
- 异常值:用 IQR 和 Z-score 检测;处理前先评估业务合理性(**异常 ≠ 错误**——比如大促当天的峰值)
- 去重,统一格式(日期、编码、单位)
- **可追溯(强制)**:记录每一个关键清洗决策,写进报告附录的「数据处理说明」
- **终止型门禁**:数据质量差到支撑不了分析(关键字段大面积缺失 / 数据整体不可用)→ 产出一份数据质量诊断报告(问题 + 修复建议),终止流程,不硬做分析
### 阶段 3:数据转换
- 计算派生指标时**优先采用行业模版里的 KPI 定义**;模版里某个指标所需字段缺失 → 跳过该指标并在报告里说明,绝不编造
- 按分析主题做透视、聚合、长宽表重塑
- 转换逻辑同样写进「数据处理说明」
### 阶段 4:数据分析
- 默认先做 EDA:分布、异常、相关性
- **分析议程围绕行业模版的「典型分析主题」组织**,逐主题深入
- 按任务需要加载方法模块(见「按需加载」表)
- 全程遵守统计纪律(见下文)
### 阶段 5:数据报告
1. **必读 `references/visualization.md`**——按它的规则选图表类型、生成 ECharts option
2. 把分析结果组织成数据 JSON(六段式内容 + 图表 option + 叙事文字),注入 `assets/report_template.html`(数据契约见模板头部注释),产出**单文件 HTML**
3. 六段式结构由模板固定:核心发现(3–5 条,结论先行)→ 分析背景与目标 → 数据概况 → 深入分析(按行业主题分节)→ 结论与建议 → 附录:数据处理说明
4. 每张图回答一个明确的问题;`insight` 字段必填(这张图说明了什么、对决策意味着什么)
5. 叙事术语和风格遵循行业模版与已确认的受众
6. **报告语言跟随用户**:用户用中文提问就出中文报告;用户用英文提问且数据也是英文,就出英文报告
**不要自己手写 HTML,也不要用 matplotlib 静态图拼报告**——基线测试里模型即兴做了一份 base64 静态图报告:没有交互、结构随意,违反交付规范。模板已经把交互(ECharts 缩放/悬停/工具箱)、CDN 固定版本、中文字体都打磨好了,你只需注入数据。matplotlib 只用于分析过程中的探查,或用户明确要求静态图/PDF 时。
## 统计纪律(全局强制,两条路径一视同仁)
1. 统计检验必须报告 p 值和置信区间,并检查其前提假设
2. 相关性结论措辞要审慎,主动点出数据里可见的混淆因素;没有因果方法验证过,绝不使用「提升了/导致了/带动了」这类措辞(措辞对照表见 `references/causal-inference.md`)
3. 样本量太小时明确说明统计功效的局限——**不要因为用户在催(「老板今天就要结论」)就硬给判断**
4. **行业基准纪律**:基准对比只在两种情况下出现——(a)用户提供了基准数据;(b)用户**明确授权**联网搜索,且结果标注了来源。两者都没有:只做内部对比,并在回复里说明「如需行业基准对比,请提供基准数据或授权我联网搜索(搜到的结果仅供方向性参考)」。**绝不凭记忆引用行业均值,绝不未经授权就联网搜索**——基线测试里模型自行搜索并引用了外部数据;即便标注了来源,这也违反授权要求:搜不搜、信哪个来源,是用户的决定
5. **多源不得静默丢失**:输入含多个数据集(多 sheet Excel / 多文件 / 多键 JSON)时,必须枚举每一个源、把完整清单摆给用户、并确认关系策略——**绝不允许只读第一个 sheet、只读点名的文件、或压掉 JSON 的键**(见 `references/data-sources.md`)。这是把模板的「不得静默截断」从输出层延伸到输入层
## 按需加载
| 文件 | 何时加载 |
|------|------|
| `industries/retail.md` | 确认为零售 / 电商 |
| `industries/saas.md` | 确认为互联网 / SaaS / 订阅制业务 |
| `industries/self-media.md` | 确认为自媒体 / 内容创作者账号运营 |
| `industries/corporate-finance.md` | 确认为企业财务 / FP&A(损益、费用、预算、现金流分析) |
| `industries/fund.md` | 确认为基金行业(基金净值表现、规模与申赎、持有人分析) |
| `industries/real-estate.md` | 确认为房地产(项目销售与去化、回款、市场量价走势) |
| `industries/construction.md` | 确认为建筑施工(项目产值与进度、人材机成本、合同承接与回款) |
| `industries/education.md` | 确认为教育培训(招生与续报、出勤与完课、渠道获客) |
| `industries/general.md` | 行业识别不出 / 无对应模版 / 用户否掉了猜测(兜底) |
| `references/data-sources.md` | 输入含多个数据集——多 sheet Excel、多文件、或多键 JSON |
| `references/visualization.md` | 阶段 4–5 只要出图就加载(阶段 5 必读) |
| `references/ab-testing.md` | 用户提到实验、对照组、A/B 测试 |
| `references/causal-inference.md` | 用户问「X 是否导致了 Y」或想要因果结论 |
| `references/time-series.md` | 数据有时间维度且需要趋势/预测 |
| `references/machine-learning.md` | 建模、分类、聚类或预测类任务 |
行业模版是薄层:**只调整分析重点与叙事风格,绝不替换五阶段流程或统计纪律。**
## 降级路径
| 情况 | 行为 |
|------|------|
| 数据质量太差 | 诊断报告 + 修复建议,终止(见阶段 2) |
| 样本太小做不了统计检验 | 描述性分析 + 统计功效局限说明 |
| 问了 3 轮目标仍不明确 | 按数据特征产出标准 EDA 报告,开头声明所做假设 |
| 环境无法交互(任何非交互模式,如 `codex exec` / `claude -p`) | 按「问了 3 轮仍不明确」处理:标准 EDA 报告 + general 行业兜底 + 开头声明假设 |
| 宿主缺任务清单工具或结构化提问工具 | **只降级呈现方式**——纯文本阶段清单 / 纯文本编号选择题,然后等回复。阶段 1 门禁与五阶段流程原样保留 |
| 行业识别置信度低 | 给 3–4 个行业选项,不猜 |
| 行业能识别但没有对应模版 | general.md + 行业术语注入叙事 |
| 用户否掉识别结果又不点名行业 | general.md,叙事保持行业中立 |
| 数据不满足因果推断前提 | 只给相关性结论 + 说明需要什么样的数据条件 |
| 时间序列点数太少 | 不做预测,只做趋势描述,并说明原因 |
| 没有可用的行业基准 | 只做内部对比,绝不编造外部基准 |
| 图表数据量过大 | 先聚合/采样再注入 HTML,并在附录注明粒度(规则见 visualization.md) |
| Python 依赖缺失 | 告知并尝试 pip 安装;失败则降级(没有 statsmodels 就只做趋势描述;没有 scikit-learn 就跳过建模并说明) |
| 多源关联键缺失 / 无法融合 | 各源独立分析,说明这一点并解释为什么融合不了 |
| 多源的 schema/结构不兼容 | 把冲突摆给用户;降级为单源或请用户澄清 |
## 危险信号(Red Flags)——冒出这些念头立刻停
- 「数据够清楚了,不用问行业」 → 回阶段 1 门禁
- 「先跑个分析给用户看看」 → 回阶段 1 门禁
- 「行业均值大概是 X%,这是常识」 → 违反基准纪律,删掉
- 「我快速搜一下行业基准」 → 未经授权不得搜索,先问
- 「样本小但趋势很明显,结论应该没问题」 → 报告统计功效局限
- 「相关性都这么强了,说『提升了』不算过」 → 查措辞对照表
- 「我自己组织报告结构会更好」 → 用模板的六段式
- 「matplotlib 图嵌进 HTML 也一样」 → 用 ECharts + 模板
- 「第一个 sheet 就够了,读它就行」/「用户点名了哪个文件我就处理哪个」 → 触碰多源静默丢失红线:枚举每一个源、摆出清单、确认策略(阶段 1 第 3 步 + `references/data-sources.md`)
## 完成前自检清单
- [ ] 行业已由用户确认(或走了正确的降级路径)
- [ ] 报告开篇是 3–5 条核心发现,结论先行
- [ ] 行业指标按模版定义计算;字段缺失的指标已说明,而非编造
- [ ] 每张图回答一个明确问题,且配有解读
- [ ] 检验报告了 p 值/置信区间;没有因果方法就没有因果措辞
- [ ] 报告里没有无来源的行业基准数字
- [ ] 附录含完整的「数据处理说明」
- [ ] 单文件 HTML;ECharts 走固定版本 CDN;联网打开时交互正常
- [ ] 报告语言与用户语言一致;叙事风格与受众匹配
- [ ] 若输入含多个数据集(sheet/文件/JSON 键),所有源都已枚举、关系策略已确认或已说明——没有任何一个被静默丢弃
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!