数据分析 — ray-data-analysis
完整数据分析工作流。从快速查数到正式报告,一条 skill 覆盖全流程。
六个工作流
按需求选工作流,复杂项目可组合使用(如:探查数据 → 写 SQL → 可视化 → 验证 → 交付)。
| # | 工作流 | 何时用 | |---|--------|--------| | 1 | 回答数据问题 | 用户有具体问题要回答 | | 2 | 探查数据集 | 遇到新表 / 新数据文件 | | 3 | 写优化 SQL | 需要生成查询供手动执行 | | 4 | 创建可视化 | 报告/演示需要图表 | | 5 | 构建交互式仪表板 | 需要可分享的交互式 dashboard | | 6 | 分享前验证分析 | 重要结论分享给相关方前 |
Workflow 1: 回答数据问题
1. 理解问题
判定复杂度:
- 快速答案:单一指标、简单过滤、事实查询("上周多少新用户?")
- 完整分析:多维探索、趋势、对比("转化率下降的原因是什么?")
- 正式报告:方法论 + 局限性 + 建议的完整调研("季度业务回顾")
明确:需要哪些表/指标/维度/时间范围,输出格式(数字/表/图/叙述)。
2. 取数
- 用户直接提供数据(粘贴查询结果 / 上传 CSV / Excel / 描述 schema)
- 写查询供用户手动执行 → 走 Workflow 3 的 SQL 方言最佳实践
- 拿到数据后开始分析
3. 分析
- 计算指标、聚合、对比
- 识别模式、趋势、离群点、异常
- 跨维度对比(时间/分段/类别)
- 复杂分析拆成子问题逐个解决
4. 交付前验证
- 行数 sanity:记录数合理吗?
- Null 检查:有没有意外空值扭曲结果?
- 量级检查:数字在合理范围吗?
- 趋势连续性:时间序列有意外缺口吗?
- 聚合逻辑:小计加总等于总计吗?
任一项存疑 → 调查并标注 caveat。
5. 呈现发现
- 快速答案:直接给答案 + 上下文 + 查询(折叠/代码块)供复现
- 完整分析:先给关键洞察 → 数据表/图表支撑 → 方法论和 caveat → 后续问题建议
- 正式报告:执行摘要 → 方法论 → 详细发现 → 局限 → 建议 → 附录(查询+数据表)
Workflow 2: 探查数据集
生成数据画像:理解形状、质量、模式,再做分析。
1. 访问数据
- 文件(CSV/Excel/Parquet/JSON):读入,过大则采样
- 用户描述表:要样本数据或 schema,生成探查查询供用户执行
2. 画像
基本统计:行数 / 列数 / 主键 / 粒度(一行 = 一个什么)/ 时间范围。
逐列分析:类型 / Null 率 / 基数(唯一值数)/ 样本值 / 分布(数值列 min/max/mean/median/std)。
数据质量红旗:Null 率高(>10%)/ 意外值(计数字段出现负数)/ 重复行 / 格式不一致(大小写混用、尾随空格)/ 时间缺口。
3. 推荐下一步
- 值得探索的高价值维度(中等基数、低 Null)
- 分析前要解决的数据质量问题
- 潜在关系(相关列、层级)
- 基于结构的分析起点
Workflow 3: 写优化 SQL
从自然语言生成 SQL,针对具体方言优化。
1. 理解需求
识别:输出列 / 过滤条件 / 聚合(GROUP BY、count、sum、avg)/ 连接(多表)/ 排序 / 限制(top-N 或采样)。
2. 定 SQL 方言
未指定时问用户:PostgreSQL / Snowflake / BigQuery / Databricks(Spark SQL) / Redshift / MySQL。各方言在日期函数、字符串操作、窗口函数上语法不同。
3. 写查询
复杂查询用 CTE:
WITH base_data AS (
SELECT ... -- 第一步:取基础数据集
),
aggregated AS (
SELECT ... -- 第二步:聚合
)
SELECT * FROM aggregated;
最佳实践:
- 显式 JOIN(不用 WHERE 隐式连接)
- 连接时所有列名加表别名限定
- CTE 和别名起有意义的名字
- 复杂逻辑加注释
- 格式化(缩进、换行)
- 考虑性能(尽早过滤、避免 SELECT *、用合适索引)
4. 加上下文
查询附带:用途一句话 / 引用的表 / 性能说明(预期行数、瓶颈)/ 方言特有说明。
Workflow 4: 创建可视化
用 Python 生成出版级图表。
1. 理解需求
确定:数据来源 / 图表类型(指定或需推荐)/ 用途(探索/演示/报告/仪表板组件)/ 受众。
2. 取数
无数据时:让用户粘贴或上传;需查询时先用 Workflow 3 生成查询。
3. 选对图表
| 展示内容 | 最佳图表 | 何时用 | |---------|---------|--------| | 时间趋势 | 折线图 | 连续时间序列 | | 类别对比 | 柱状图 | 离散类别 | | 占比 | 堆叠柱/饼图 | 构成、相对大小 | | 分布 | 直方图/箱线图 | 离散度和离群点 | | 相关性 | 散点图 | 两变量关系 | | 排名 | 水平柱状图 | 有序列表、易读标签 |
4. 生成 Python 代码
交互图用 plotly,静态图用 seaborn 或 matplotlib。模板见 references/visualization-code.md。
5. 设计原则
- 清晰:去掉图表垃圾,标签明确
- 准确:不截断坐标轴夸大差异
- 可访问:色盲友好配色
- 上下文:关键点加参考线、注释
Workflow 5: 构建交互式仪表板
自包含 HTML 仪表板,浏览器直接打开,无服务器无依赖。
1. 理解需求
用途(高管概览/运营监控/深挖分析/团队汇报)/ 受众 / 关键指标 / 维度(可过滤切片)/ 数据来源。
2. 取数
需查询走 Workflow 3;提供数据则确保结构化(CSV/JSON)。
3. 设计布局
- Header:标题、日期范围、关键过滤器
- KPI 卡片:3-5 个最重要的数字
- 主图表:2-3 个主要可视化
- 明细区:下钻表格或次级图表
- Footer:方法论、数据源、更新时间
4. 生成 HTML/JS
Chart.js 模板见 references/dashboard-template.md。
5. 加交互
下拉过滤(类别/时间/分段)/ 图表交互(悬停 tooltip、点击下钻)/ 表格排序(点列头)/ 动态更新(过滤器联动所有图表)。
Workflow 6: 分享前验证分析
分享前审查准确性、方法论、潜在偏差,产出置信度评估和改进建议。
1. 审查方法论和假设
数据选择:用了哪些表/源?对吗?时间范围够新吗?过滤器引入偏差吗?
聚合逻辑:分组合适吗?小计等于总计吗?Null 处理对了吗(排除 vs 计为零)?
统计方法:用平均还是中位数更合适?百分比分母一致吗?趋势考虑季节性了吗?
2. 查常见陷阱
- 幸存者偏差:只分析现有客户 → 排除了流失用户
- 选择偏差:样本代表总体吗?
- 辛普森悖论:聚合趋势与子组趋势矛盾
- 相关 ≠ 因果:混淆变量在起作用吗?
3. Sanity 检查
量级(数字在合理范围)/ 方向(趋势符合业务常识)/ 一致性(相关指标讲同一故事)。有异常 → 重查查询 → 找数据质量问题 → 考虑外部因素。
4. 评估置信度
- 高:方法论扎实、结果已验证、局限已记录
- 中:有 minor 顾虑或 caveat,但核心结论成立
- 需重做:方法论或数据质量问题需要解决
5. 记录局限
每份分析都有局限,记录:排除了什么 / 假设 / 误差范围 / 已知数据质量问题 / 替代解释。
示例 caveat:"本分析排除试用用户,可能高估转化率约 5pp(相对全部注册用户)。"
按分析类型选方法(v1.1 新增)
分析前先判断数据类型,再选对应的检验和可视化。
| 类型 | 适用场景 | 统计检验 | 可视化 | |------|---------|---------|--------| | 实验数据 | 对照试验、组间比较、前后测 | t检验 / ANOVA / 卡方 | 箱线图、小提琴图、带误差线条形图 | | 调查数据 | 问卷、相关研究、预测 | 相关(Pearson/Spearman)/ 回归 / 因子分析 | 热力图、散点图、直方图 | | 探索性 | 初步探索、特征工程、假设生成 | 描述统计 + 相关分析 | 配对图、分布图、相关矩阵 |
关键原则(v1.1 新增):
- 先探索后检验:先做 EDA 了解数据,再选统计方法
- 检查假设条件:正态性 / 方差齐性 / 独立性(详见
references/statistical-tests.md) - 报告效应量:不只报 p 值,还要效应量 + 置信区间
独有补充
ASCII 快速图表(无法生成图片时)
Revenue by Month (in $K)
========================
Jan: ████████████████ 160
Feb: ██████████████████ 180
Mar: ████████████████████████ 240
常见错误
❌ 确认偏差(找数据支持已有结论)|❌ 相关≠因果 |❌ 挑樱桃(只用有利数据)|❌ 忽略离群点(删前先调查)|❌ 过度复杂(简单分析常胜)|❌ 无上下文(数字无对比无意义)
最佳实践
- 从问题出发 2. 验证数据(垃圾进垃圾出)3. 记录一切(查询/假设/决策)4. 恰当可视化 5. 展示过程(方法论重要)6. 洞察先行(不是数据倾倒)7. 可行动("So what?" → "Now what?")8. 版本化查询
参考资料(按需加载)
references/report-templates.md— 标准报告模板 + 分析需求模板(写正式报告时读)references/statistical-tests.md— 描述统计表 + 统计检验速查(做统计分析时读)references/data-cleaning.md— 数据清洗清单 + 清洗 SQL 模式(数据脏时读)references/visualization-code.md— Python 可视化代码模板(画图时读)references/dashboard-template.md— 交互式仪表板 HTML 模板(做仪表板时读)
维护记录
| 日期 | 变更 | |------|------| | 2026-08-14 | v1.1.0:进化轮(对比学术场景数据分析工作流)。①新增「按分析类型选方法」章节(实验/调查/探索性 → 检验+可视化映射);②统计检验速查补假设条件(正态性/方差齐性/独立性)+ 效应量(Cohens d/η²)+ APA 报告格式;③数据清洗补量化标准(缺失值/异常值分档)。 | | 2026-08-14 | v1.0.0:融合创建。主体为 6 个工作流(回答数据问题/探查数据集/写优化SQL/创建可视化/构建交互式仪表板/分享前验证),补充 ASCII 快速图表、报告模板、需求模板、统计检验速查、数据清洗清单、常见错误、最佳实践。 |
Scan to join WeChat group