# Data Analysis

> 数据分析技能，用于理解数据、分析数据、制作数据处理流程、汇总数据分析结果。当用户提到"分析数据"、"数据处理"、"数据探索"、"统计分析"、"数据清洗"、"数据汇总"、"制作数据报告"、"理解这份数据"、"看一下这个CSV/Excel/数据集"时，必须使用此技能。即使用户只说"帮我看看这个数据"、"分析一下"，只要上下文涉及数据文件或数据集，也应立即触发此技能。如果在FaMou问题定义过程中涉及到数据分析，也需要调用此技能。

- Skill: `baidubce/data-analysis` (Agent Skill)
- Install (CLI): `npx skillmds@latest add baidubce/data-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/baidubce/data-analysis/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: baidubce (https://skillmd.com/u/baidubce)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/baidubce/data-analysis

---


# 数据分析技能

## 分析目标

数据分析任务的核心目标是：

1. **理解数据**：搞清楚数据是什么、从哪来、代表什么业务含义，而不仅仅是读取文件
2. **评估数据质量**：识别缺失、重复、异常、格式不一致等问题，判断数据可信度
3. **发现规律与洞察**：通过统计和探索，找出数据中有意义的模式、趋势、异常和关联
4. **制定处理流程**：根据实际数据问题，设计可复现、有依据的清洗和转换方案
5. **汇总结果**：用清晰、有业务价值的语言输出结论，不是堆砌统计数字

---

## 处理约束

**在分析过程中，始终遵守以下约束：**

- **不擅自修改原始数据**：任何清洗或转换操作都要先告知用户，说明原因，再执行
- **不过度假设数据含义**：列名不清晰时，应向用户确认，而不是自行猜测
- **不忽略数据质量问题**：发现异常、缺失、不一致时必须明确标注，不能绕过
- **不强行套用固定流程**：数据格式千差万别，应根据实际情况灵活判断分析路径
- **不脱离用户目标做分析**：始终围绕"用户想解决什么问题"来决定分析深度和方向

---

## 最佳实践

### 先理解，再动手
拿到数据后，优先弄清楚背景：数据的业务场景是什么？用户的分析目的是什么？这决定了哪些列重要、什么算"异常"、如何处理缺失值。

### 用业务语言解释结果
不要只输出统计数字，要解释它们的含义。"均值是 3200"不如"平均订单金额约 3200 元，但中位数仅 1800 元，说明存在少量高额订单拉高了均值"。

### 数据质量问题要分级处理
- **阻断性问题**（如关键列全为空、主键大量重复）：先停下来告知用户，确认后再继续
- **需要决策的问题**（如缺失率高、含义不明的异常值）：列出处理方案的利弊，让用户选择
- **轻微问题**（如少量格式不一致、空白字符）：可直接处理，但要在报告中记录

### 处理流程要可解释
每一步操作都要能回答"为什么这样做"，例如：
- "用中位数填充，因为该列分布右偏，均值受极值影响大"
- "删除该列，因为缺失率达 78%，无法有效利用"

### 结论要有数据支撑
每个洞察后面都应该跟上具体数字作为依据，避免主观判断。

### 环境与工具
- 文件路径：上传目录使用 `<workspace>/uploads/`，输出目录使用 `<workspace>/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 行缺失 → 保留为空（用户确认这批订单为异常记录，不填充）
```

