Back to skills
extension
Category: OtherNo API key required

data- analysis

端到端数据分析项目工作流技能。从项目初始化、目标设定、规范生成、研究设计、执行指令、任务分发、代码脚手架到质量检查,一个技能覆盖完整数据分析项目全流程。

personAuthor: user_b360865dhubcommunity

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

核心禁止事项

  1. 禁止修改 data/ 目录(原始数据只读)
  2. 禁止跨章节写入产物(产物归属清晰)
  3. 禁止在项目根目录散落文件
  4. 禁止跳过依赖直接执行(按批次顺序)
  5. 禁止在代码中硬编码参数(使用 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代码块 | | 检查标准 | 可选 | 编号列表的可验证条件 | | 异常反馈 | 可选 | 异常场景及处理策略 |

批次划分(拓扑排序算法)

  1. 构建依赖图:以每个 Prompt 为节点,数据依赖关系为有向边
  2. 计算入度:统计每个节点的入度(前置依赖数量)
  3. 逐层展开:入度为0的节点归入当前批次,移除后更新入度,重复至完毕
  4. 批次结构: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.pyPROJECT_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技能独立发布 |