data-analysis (v3.0)
端到端数据分析项目工作流。一个技能覆盖从项目初始化到交付验收的完整流程,按7个阶段顺序推进。
触发词
- "开始数据分析项目" / "新数据分析项目"
- "帮我做数据分析"
- "data analysis project"
- 任何涉及数据分析项目全流程的请求
工作流程总览(7 阶段)
| 阶段 | 名称 | 核心产物 | 用户确认点 |
|:---:|------|----------|:---:|
| 1 | 项目初始化 | project_params.json | 10参数确认 |
| 2 | 分析目标 | docs/analysis_goals.md | SMART目标确认 |
| 3 | 项目规范 | docs/project_convention.md + requirements.txt | 规范审阅 |
| 4 | 研究设计 | docs/flow_design.md | 方案确认 |
| 5 | 执行指令 & 任务分发 | docs/execution_prompts.md + docs/task_dispatch_guide.md | 批次划分确认 |
| 6 | 代码脚手架 & 执行 | src/utils/ + 章节脚本 + 分析产物 | 每章产物确认 |
| 7 | 质量检查 | outputs/quality_report.md | 验收报告 |
调度规则:
- 每个阶段完成后等待用户确认,再进入下一阶段
- 阶段6内按批次执行:每批次完成后验证产物,再启动下一批次
- 阶段5生成的批次划分决定阶段6的执行顺序
Phase 1: 项目初始化
十参数定义
收集以下10个核心参数,输出 project_params.json:
| # | 参数 | 类型 | 说明 | 示例 |
|---|------|------|------|------|
| 1 | PROJECT_NAME | string | 英文项目名(目录名) | My_Data_Analysis |
| 2 | PROJECT_DESCRIPTION | string | 中文一句话描述 | 电力负荷预测分析 |
| 3 | RAW_DATA_FILENAME | string | 原始数据文件名 | raw_data.xlsx |
| 4 | DATA_FORMAT | string | 数据格式 | xlsx / csv / parquet |
| 5 | ENTITY_NAME | string | 分析实体中文名 | 城市 / 客户 / 产品 |
| 6 | ENTITY_CONFIG | JSON | 实体配置列表 | ["Entity_01", "Entity_02"] |
| 7 | CHAPTER_LIST | JSON | 章节列表(含id、名称、目录后缀) | 见下方模板 |
| 8 | CHAPTER_DEPENDENCIES | JSON | 章节依赖关系 | {"ch02":["ch01"]} |
| 9 | PYTHON_VERSION | string | Python版本 | 3.10 / 3.11 |
| 10 | ENV_NAME | string | 环境名 | py310 |
CHAPTER_LIST 结构
[
{"id": 1, "name_cn": "数据预处理", "name_en": "data_cleaning", "dir_suffix": "data_cleaning"},
{"id": 2, "name_cn": "探索性分析", "name_en": "exploratory_analysis", "dir_suffix": "exploratory_analysis"},
{"id": 3, "name_cn": "模式挖掘", "name_en": "pattern_mining", "dir_suffix": "pattern_mining"}
]
关键:
dir_suffix必须与实际代码目录名完全一致。例如代码中OUTPUT_BASE / "ch02_exploratory_analysis",则dir_suffix为"exploratory_analysis",不能简写。
CHAPTER_DEPENDENCIES 结构
{
"ch01": [],
"ch02": ["ch01"],
"ch03": ["ch01"],
"ch04": ["ch02", "ch03"]
}
输出:project_params.json — 10个核心参数的JSON配置,供后续阶段使用。
Phase 2: 分析目标
13 个背景问题
按四类收集业务背景:
业务背景类(Q1-Q4):数据来自什么业务场景?每行代表什么?关键业务指标?当前痛点?
分析动机类(Q5-Q7):为什么现在做?期望产出?结果如何使用?
约束条件类(Q8-Q10):时间约束?特定关注维度?排除条件?
技术偏好类(Q11-Q13):需要预测模型?可解释性vs准确性偏好?有无对比基准?
分析目标类型
| 类型 | 适用场景 | 典型方法 | |------|---------|----------| | 描述性 | 理解现状、发现规律 | 描述统计、可视化、聚类 | | 诊断性 | 解释原因、定位问题 | 相关分析、归因分析、决策树 | | 预测性 | 预测未来、风险评估 | 分类/回归模型、时序预测 | | 规范性 | 优化决策、策略推荐 | 优化模型、仿真模拟 |
SMART 目标原则
- Specific(具体): 明确分析什么、不分析什么
- Measurable(可衡量): 有明确的评估指标
- Achievable(可实现): 基于现有数据和技术可行
- Relevant(相关): 与业务痛点和需求直接相关
- Time-bound(有时限): 明确分析的时间范围
研究问题模板
## 研究问题清单
### 核心研究问题(RQ-Core)
**问题**: {{CORE_RESEARCH_QUESTION}}
**背景**: {{WHY_THIS_QUESTION}}
**数据支持**: {{WHICH_DATA_SUPPORTS}}
**预期产出**: {{EXPECTED_ANSWER_FORMAT}}
### 子研究问题(RQ-Sub)
#### RQ-Sub-1: {{SUB_QUESTION_1}}
- **与核心问题关系**: {{RELATION_TO_CORE}}
- **分析方法**: {{ANALYSIS_METHOD}}
- **所需数据**: {{REQUIRED_DATA}}
- **产出形式**: {{OUTPUT_FORMAT}}
输出:docs/analysis_goals.md — 包含业务背景、SMART目标、研究问题清单、决策框架。
Phase 3: 项目规范
基于 Phase 1 的10个参数,生成项目规范文档和依赖文件。
目录结构
{{PROJECT_NAME}}/
├── data/ # 原始数据目录(只读)
├── src/
│ ├── utils/ # 通用工具模块(6个)
│ │ ├── config.py
│ │ ├── data_loader.py
│ │ ├── visualizer.py
│ │ ├── metrics.py
│ │ ├── output_manager.py
│ │ └── task_graph.py
│ ├── ch01_xxx/ # 各章节脚本
│ │ ├── script.py
│ │ └── notebook.ipynb
│ └── ...
├── outputs/ # 产物输出
│ ├── ch01_xxx/
│ │ ├── ch 01-环节名称-report.md
│ │ └── ...
│ └── ...
├── docs/ # 文档
├── requirements.txt
└── README.md
核心禁止事项
- 禁止修改
data/目录(原始数据只读) - 禁止跨章节写入产物(产物归属清晰)
- 禁止在项目根目录散落文件
- 禁止跳过依赖直接执行(按批次顺序)
- 禁止在代码中硬编码参数(使用
src/utils/config.py)
requirements.txt 模板
# === 基础依赖(必装) ===
pandas>=2.0.3
numpy>=1.24.3
openpyxl>=3.1.2 # Excel 读写
scipy>=1.11.4
matplotlib>=3.8.0
seaborn>=0.13.0
# === 可选依赖(按需取消注释) ===
# --- 机器学习组 ---
# scikit-learn>=1.3.0
# xgboost>=2.0.0
# lightgbm>=4.1.0
# --- 时序分析组 ---
# statsmodels>=0.14.0
# pmdarima>=2.0.0
# --- 深度学习组 ---
# torch>=2.0.0
# --- 优化组 ---
# pulp>=2.7.0
# --- 工具库 ---
# tqdm>=4.66.0
# joblib>=1.3.0
依赖推断规则
| 项目特征 | 推断依赖 | |----------|----------| | 章节含"预测"/"forecast" | scikit-learn, xgboost, lightgbm | | 章节含"时序"/"趋势"/"ARIMA" | statsmodels, pmdarima | | 章节含"LSTM"/"深度学习" | torch | | 章节含"优化"/"调度"/"规划" | pulp | | 数据量 > 100MB | joblib, tqdm |
输出:docs/project_convention.md + requirements.txt
Phase 4: 研究设计
为每个分析章节定义六节结构,选择章节原型。
章节六节结构
| # | 节名 | 必需 | 说明 | |---|------|:---:|------| | 1 | 研究目标 | ✅ | 本章要回答的核心问题 | | 2 | 数据输入 | ✅ | 输入数据项、来源、格式 | | 3 | 技术方法 | ✅ | 分析方法、公式/参数、选择理由 | | 4 | 实施步骤 | ✅ | 具体操作步骤(8步左右) | | 5 | 阶段产物 | ✅ | 输出文件清单及后续使用 | | 6 | 质量验证标准 | ✅ | 检查清单 |
三种章节原型
原型 A:数据预处理型
典型步骤:数据读取与结构探查 → 缺失值检测统计 → 时间戳解析标准化 → 数据对齐(采样) → 量纲统一 → 异常值检测(3sigma/IQR) → 异常值处理(插值/截断) → 特征工程 → 数据质量报告
典型方法:pd.read_excel() / pd.read_csv(), df.isnull().sum(), pd.to_datetime(), df.interpolate(), scipy.stats.zscore(), df.clip(), 时间特征(hour/dayofweek/month)
典型产物:缺失值统计表、清洗后数据集、特征工程数据集、异常值标记表、数据质量报告
验证标准:无NaN残留、量纲统一正确、异常值处理后分布无突变、特征列完整、report.md 四段框架完整
原型 B:分析探索型
典型步骤:数据加载验证 → 描述性统计 → 分布分析(直方图/箱线图/KDE) → 相关性分析(热力图) → 分组对比 → 趋势/模式识别 → 模型训练与评估 → 结果可视化与解读 → 分析报告
典型方法:df.describe(), plt.hist() / sns.boxplot(), df.corr() / sns.heatmap(), sns.lineplot(), statsmodels.tsa.seasonal_decompose(), sklearn.model_selection.train_test_split()
典型产物:描述性统计表、分布图、相关性热力图、分组对比表、模型对比表、分析报告
验证标准:描述统计覆盖全部实体、分布图覆盖全部实体、模型评估指标完整(MAE/RMSE/MAPE)、report.md 四段框架完整
原型 C:总结报告型
典型步骤:全部章节产物加载验证 → 关键指标汇总 → 成果亮点提炼 → 交叉验证(一致性检查) → 局限性分析 → 建议与展望 → 交付物清单整理 → 最终报告
典型方法:TaskGraph().get_status(), pd.concat()/pd.merge(), Markdown长文本生成、表格/图表汇总
典型产物:成果总结、关键发现、建议与展望、交付物清单、关键指标总览表
验证标准:全部前序章节核心发现已纳入、关键指标覆盖全部量化结论、局限性覆盖数据/方法/范围三维度、report.md 四段框架完整
文档关系链
flow_design.md → 定义"做什么、为什么、用什么方法"(设计层)
↓
execution_prompts.md → 定义"怎么做"(执行层,精确到代码级别)
↓
task_dispatch_guide.md → 定义"怎么派活"(操作层,任务分发)
输出:docs/flow_design.md
Phase 5: 执行指令 & 任务分发
五段式 Prompt 结构
每个章节的执行指令采用五段式:
# Prompt-{NN}: {CHAPTER_NAME}
## 一、任务概述
1.1 本次任务是什么
1.2 从什么数据出发
1.3 可以采用什么方法
## 二、执行步骤(六子结构)
Step N: {STEP_NAME}
- 本步骤要做什么(必选)
- 本步骤输出产物(必选)
- 具体操作指引(可选)
- 代码框架(可选)
- 检查标准(可选)
- 异常反馈(可选)
## 三、产物总览与结构说明
## 四、产物后续优化方向
## 五、异常处理与问题反馈机制
Step 六子结构(2必选 + 4可选)
| 子结构 | 必填/可选 | 说明 | |--------|:---:|------| | 本步骤要做什么 | 必选 | 1-3句话描述核心目标和价值 | | 本步骤输出产物 | 必选 | 文件名+路径+结构说明 | | 具体操作指引 | 可选 | 详细操作步骤和注意事项 | | 代码框架 | 可选 | 完整可运行的Python代码块 | | 检查标准 | 可选 | 编号列表的可验证条件 | | 异常反馈 | 可选 | 异常场景及处理策略 |
批次划分(拓扑排序算法)
- 构建依赖图:以每个 Prompt 为节点,数据依赖关系为有向边
- 计算入度:统计每个节点的入度(前置依赖数量)
- 逐层展开:入度为0的节点归入当前批次,移除后更新入度,重复至完毕
- 批次结构:Batch-0(串行前置)→ Batch-1~N-1(并行执行)→ Batch-N(串行收束)
核心规则:
| # | 规则 |
|---|------|
| 1 | 严禁跳批:每个批次必须等前置依赖全部完成后启动 |
| 2 | 数据不覆盖:每个章节产物写入独立 outputs/ch{NN}_{dir}/ 目录 |
| 3 | 脚本双格式:.py(批量执行)+ .ipynb(交互),执行逻辑一致 |
| 4 | 全局配置共享:所有脚本通过 config.py 统一路径和参数 |
| 5 | 章节报告必需:每章执行后生成 outputs/chXXX/ch XX-环节名称-report.md |
| 6 | 输出统一归档:所有产物统一放到 outputs/chXXX/ 目录 |
| 7 | 话术必须具体:每个 Prompt 的具体话术明确、可执行 |
| 8 | 技能调用明确:每个 Prompt 注明需调用的 Skill 及具体函数 |
章节速查表字段
| 字段 | 说明 | 示例 |
|------|------|------|
| Prompt 编号 | 两位数字编号 | Prompt-01 |
| 章节名称 | 中文简称(3~8字) | 数据预处理 |
| 具体话术 | 执行该 Prompt 的完整指令 | "阅读 execution_prompts.md 的 Prompt-01 部分,调用 Skill-01 加载数据..." |
| 输入数据 | 该章节所需的全部输入文件 | data/raw_data.csv |
| 核心产物 | 最重要的 1~3 个产物 | ch01_cleaned_data.csv, ch01_report.md |
| 后续依赖方 | 依赖该章节产物的下游编号 | Prompt-02, Prompt-04 |
输出:docs/execution_prompts.md + docs/task_dispatch_guide.md
Phase 6: 代码脚手架 & 执行
6 个通用工具模块(src/utils/)
Skill-01: data_loader.py — 标准数据加载器
| 函数 | 参数 | 返回值 | 功能 |
|------|------|--------|------|
| load_raw_data() | entity_name, source | DataFrame | 加载原始数据(CSV/Excel/Parquet自动识别) |
| load_all_entities() | data_dir | Dict[str, DataFrame] | 批量加载所有实体数据 |
| load_preprocessed() | chapter, entity | DataFrame | 加载预处理后的数据 |
Skill-02: visualizer.py — 标准可视化出图器
| 函数 | 参数 | 返回值 | 功能 |
|------|------|--------|------|
| plot_time_series() | df, x, y, title | Figure | 时序折线图 |
| plot_multi_comparison() | dfs, metric | Figure | 多实体对比图 |
| plot_heatmap() | df, title | Figure | 相关性热力图 |
| plot_model_forecast() | y_true, y_pred | Figure | 预测结果对比图 |
Skill-03: metrics.py — 标准评估指标计算器
| 函数 | 参数 | 返回值 | 功能 |
|------|------|--------|------|
| calc_mae() | y_true, y_pred | float | 平均绝对误差 |
| calc_rmse() | y_true, y_pred | float | 均方根误差 |
| calc_mape() | y_true, y_pred, threshold | float | 平均绝对百分比误差 |
| evaluate_model() | y_true, y_pred, model_name, threshold | Dict | 综合评估,返回指标字典 |
| compare_models() | results | DataFrame | 多模型对比表,自动标注质量等级 |
Skill-04: output_manager.py — 标准输出产物管理器
| 函数 | 参数 | 返回值 | 功能 |
|------|------|--------|------|
| ensure_dir() | path | None | 确保目录存在 |
| save_dataframe() | df, filename, output_dir | str | 保存DataFrame为CSV |
| save_figure() | fig, filename, output_dir, dpi | str | 保存图表(PNG) |
| save_markdown() | content, filename, output_dir | str | 保存Markdown报告 |
Skill-05: task_graph.py — 任务依赖图
| 函数 | 参数 | 返回值 | 功能 |
|------|------|--------|------|
| TaskGraph() | config_path | TaskGraph | 初始化任务图管理器 |
| .get_status() | - | Dict | 获取所有任务完成状态 |
| .check_dependencies() | task_id | bool | 检查前置依赖是否满足 |
| .update_status() | task_id, status | None | 更新任务状态 |
| .print_status() | - | None | 打印格式化进度表格 |
Skill-06: config.py — 全局配置模块
PROJECT_NAME = '{{PROJECT_NAME}}'
PROJECT_NAME_CN = '{{PROJECT_NAME_CN}}'
PROJECT_SLUG = '{{PROJECT_SLUG}}'
DATA_DIR = os.path.join(PROJECT_ROOT, 'data')
OUTPUT_BASE = os.path.join(PROJECT_ROOT, 'outputs')
SRC_DIR = os.path.join(PROJECT_ROOT, 'src')
ENTITY_CONFIG = {
'{{ENTITY_01_NAME}}': {
'source': '{{ENTITY_01_SOURCE}}',
'sampling': '{{ENTITY_01_SAMPLING}}',
'unit': '{{ENTITY_01_UNIT}}',
},
}
PLT_CONFIG = {'dpi': 150, 'font_size': 12, 'figsize': (12, 6)}
三项输出规范
| 规范 | 路径 | 说明 |
|------|------|------|
| 章节执行报告 | outputs/chXXX/ch XX-环节名称-report.md | 四段框架,每章必需 |
| 交互 Notebook | src/chXXX/notebook.ipynb | 与 .py 执行逻辑一致 |
| 产物统一归档 | outputs/chXXX/ | 所有输出文件统一存放 |
report.md 四段框架
# ch{NN} {CHAPTER_TITLE}
## 背景
{本章输入数据的来源、特征、规模;本章要解决的核心问题;前置章节的产物依赖}
## 分析方法
{采用的分析方法/模型/算法及选择理由;关键参数设置;数据预处理策略}
## 分析发现
{核心发现与关键数据支撑;可视化图表解读;异常值或特殊情况说明}
## 小结
{结论性摘要;产物清单;对下游章节的影响或建议}
原则:四段框架是骨架,每段内部内容根据实际分析自由组织。
执行模式
| 任务类型 | 执行方式 | 示例 |
|---------|----------|------|
| 数据加载、配置检查 | 直接执行 | 运行 python -c "from utils.data_loader import *" |
| 数据预处理 | 直接执行 | 运行 .py 脚本 |
| 可视化生成 | 直接执行 | 运行 .py 脚本,输出图表 |
| 建模与预测 | 提供指导 | 给出代码框架,用户确认后执行 |
| 超参数调优 | 提供指导 | 给出调优策略,用户选择 |
| 复杂分析 | 提供指导 | 分步骤指导,每步确认 |
输出:src/utils/(6个工具模块) + 各章节脚本 + 分析产物
Phase 7: 质量检查
12 项验证标准
| # | 检查项 | 验证方法 | 严重度 |
|---|--------|----------|:---:|
| 1 | 目录结构完整性 | tree 检查 | HIGH |
| 2 | config.py 配置正确性 | python -c "from utils.config import *" | HIGH |
| 3 | 数据加载器可用性 | python -c "from utils.data_loader import load_all_entities; data = load_all_entities()" | HIGH |
| 4 | Skill 模块导入正常 | 逐个 import 检查 | HIGH |
| 5 | 章节脚本可独立运行 | python src/chXX_xxx/script.py | HIGH |
| 6 | 产物文件完整性 | 对比 execution_prompts.md 产物清单 | HIGH |
| 7 | Notebook 可执行 | Jupyter 全部 Cell 执行无报错 | MEDIUM |
| 8 | report.md 存在性与完整性 | 检查四段框架(背景、分析方法、分析发现、小结) | HIGH |
| 9 | 输出目录归档规范 | 验证所有产物均在 outputs/chXXX/ 下 | MEDIUM |
| 10 | 文档一致性审计 | execution_prompts.md 目录名 vs 实际目录名 | HIGH |
| 11 | 代码风格统一性 | 所有章节使用 utils 模块,无自行定义路径 | HIGH |
| 12 | 报告结论与数据一致性 | report.md 结论有数据支撑,无矛盾 | HIGH |
质量报告模板
# {PROJECT_NAME} 项目全面质量验收报告
> 验收日期: {DATE} | 验收范围: 全局产物盘点、代码质量、文档一致性、报告结论验证
## 一、全局产物盘点
| 章节 | 要求产物数 | 实际产物数 | 完整性 | 缺失/多余 |
|------|:---:|:---:|:---:|------|
| {CHAPTER} | {REQ} | {ACTUAL} | {PASS/WARN/FAIL} | {NOTES} |
## 二、代码质量检查
| 文件 | 问题 | 严重度 |
|------|------|:---:|
## 三、文档一致性审计
| Prompt中的目录 | 实际目录 | 一致性 |
|------|------|:---:|
## 四、报告结论验证
| 报告结论 | 数据文件 | 一致性 |
|------|------|:---:|
## 五、需要修复的文件清单
### 严重问题 (HIGH — 必须修复)
### 中等问题 (MEDIUM — 建议修复)
## 六、验收总结
| 维度 | 评分 | 说明 |
|------|:---:|------|
| 产物完整性 | /10 | |
| 代码质量 | /10 | |
| 文档一致性 | /10 | |
| 数据分析质量 | /10 | |
| 综合评分 | /10 | |
常见问题速查
| 问题 | 解决方案 |
|------|----------|
| ModuleNotFoundError: No module named 'utils' | 检查脚本开头 sys.path 设置 |
| FileNotFoundError: RAW_DATA_FILE | 验证 config.py 中 PROJECT_ROOT 路径 |
| TaskGraph 显示全部"未开始" | 检查 PROJECT_ROOT 是否正确 |
| 产物文件被覆盖 | 使用 ch{NN}_ 前缀规范 |
| 文档一致性检查失败 | 修正 execution_prompts.md 目录名为实际目录名 |
| 代码风格检查失败 | 重构章节代码以使用 utils 模块 |
输出:outputs/quality_report.md + outputs/delivery_checklist.md
依赖关系全景
Phase 1: 项目初始化(10参数)
│
├──▶ Phase 3: 项目规范(目录结构、命名、依赖)
│
├──▶ Phase 2: 分析目标(13问、SMART目标)
│ │
│ └──▶ Phase 4: 研究设计(三种原型、六节结构)
│ │
│ ├──▶ Phase 5: 执行指令(五段式Prompt)
│ │ │
│ │ └──▶ Phase 6: 代码脚手架(6个utils模块)
│ │
│ └──▶ Phase 5: 任务分发(拓扑排序、批次划分)
│ │
│ └──▶ Phase 6: 任务执行(混合执行模式)
│ │
│ └──▶ Phase 7: 质量检查(12项验证)
版本历史
| 版本 | 日期 | 变更内容 | |------|------|----------| | v3.0 | 2026-05-25 | 单文件整合版:合并 init、goal、convention、flow_design、execution_prompts、task_dispatch、code_scaffold、task-execution-helper、quality_check 共9个技能为一个自包含技能 | | v2.1 | 2026-05-11 | 将 report.md 改为 ch XX-环节名称-report.md 命名格式 | | v2.0 | 2026-05-07 | 加入三种章节原型、五段式Prompt、4个Skill模块、12项质量检查 | | v1.0 | 2026-01 | 初始版本,9技能独立发布 |
Scan to join WeChat group