数据探索Skill data-exploration

数据探索技能用于在数据分析前,系统化地剖析数据集、评估数据质量、发现模式、识别异常和异常值。关键词:数据探索、数据剖析、质量评估、模式发现、数据分析、数据科学、数据工程、商业智能。

数据分析 0 次安装 0 次浏览 更新于 3/18/2026

name: 数据探索 description: 在分析之前,剖析和探索数据集以了解其形状、质量和模式。使用当遇到新数据集、评估数据质量、发现列分布、识别空值和异常值,或决定分析哪些维度时。

数据探索技能

系统化的方法论,用于剖析数据集、评估数据质量、发现模式和理解模式。

数据剖析方法论

阶段1:结构理解

在分析任何数据之前,了解其结构:

表级问题:

  • 有多少行和列?
  • 粒度是什么(每行代表什么)?
  • 主键是什么?是否唯一?
  • 数据上次更新时间?
  • 数据追溯多远?

列分类: 将每列分类为以下之一:

  • 标识符:唯一键、外键、实体ID
  • 维度:用于分组/筛选的分类属性(状态、类型、区域、类别)
  • 指标:用于测量的定量值(收入、计数、持续时间、分数)
  • 时间:日期和时间戳(创建时间、更新时间、事件日期)
  • 文本:自由格式文本字段(描述、笔记、名称)
  • 布尔:真/假标志
  • 结构:JSON、数组、嵌套结构

阶段2:列级剖析

对每列,计算:

所有列:

  • 空值计数和空值率
  • 唯一值计数和唯一性比率(唯一值 / 总数)
  • 最常见值(前5-10个及其频率)
  • 最不常见值(底部5个以发现异常)

数值列(指标):

最小值、最大值、平均值、中位数(p50)
标准差
百分位数:p1、p5、p25、p75、p95、p99
零值计数
负值计数(如果意外)

字符串列(维度、文本):

最小长度、最大长度、平均长度
空字符串计数
模式分析(值是否遵循某种格式?)
大小写一致性(全大写、全小写、混合?)
前导/尾随空格计数

日期/时间戳列:

最小日期、最大日期
空日期
未来日期(如果意外)
按月/周分布
时间序列中的间隔

布尔列:

真值计数、假值计数、空值计数
真值率

阶段3:关系发现

剖析各个列后:

  • 外键候选:可能链接到其他表的ID列
  • 层次结构:形成自然下钻路径的列(国家 > 州 > 城市)
  • 相关性:一起移动的数值列
  • 派生列:似乎从其他列计算得出的列
  • 冗余列:具有相同或近似相同信息的列

质量评估框架

完整性得分

对每列评分:

  • 完整 (>99% 非空):绿色
  • 基本完整 (95-99%):黄色——调查空值
  • 不完整 (80-95%):橙色——理解原因及其重要性
  • 稀疏 (<80%):红色——可能无法在不填充的情况下使用

一致性检查

查找:

  • 值格式不一致:相同概念以不同方式表示(“美国”、“USA”、“United States”、“us”)
  • 类型不一致:数字存储为字符串、日期以各种格式
  • 引用完整性:外键不匹配任何父记录
  • 业务规则违反:负数量、结束日期早于开始日期、百分比 > 100
  • 跨列一致性:状态 = “完成”但完成时间为空

准确性指标

表明准确性问题的红旗:

  • 占位符值:0、-1、999999、“N/A”、“TBD”、“test”、“xxx”
  • 默认值:单一值频率异常高
  • 过时数据:更新_时间显示在活跃系统中没有最近更改
  • 不可能值:年龄 > 150、未来日期、负持续时间
  • 整数偏见:所有值以0或5结尾(表明估计,而非测量)

及时性评估

  • 表上次更新时间?
  • 预期更新频率?
  • 事件时间和加载时间之间是否有延迟?
  • 时间序列中是否有间隔?

模式发现技术

分布分析

对数值列,描述分布:

  • 正态:均值和接近中位数,钟形
  • 右偏:高值长尾(常见于收入、会话持续时间)
  • 左偏:低值长尾(较少见)
  • 双峰:两个峰值(表明两个不同群体)
  • 幂律:少数极大值,多数小值(常见于用户活动)
  • 均匀:整个范围频率大致相等(通常为合成或随机)

时间模式

对时间序列数据,查找:

  • 趋势:持续向上或向下移动
  • 季节性:重复模式(每周、每月、每季度、每年)
  • 星期几效应:工作日与周末差异
  • 假日效应:已知假日周围下降或峰值
  • 变化点:水平或趋势的突然变化
  • 异常值:违反模式的单个数据点

分段发现

通过以下识别自然分段:

  • 找到具有3-20个唯一值的分类列
  • 比较跨分段值的指标分布
  • 查找行为显著不同的分段
  • 测试分段是否同质或包含子分段

相关性探索

数值列之间:

  • 计算所有指标对的相关矩阵
  • 标记强相关性(|r| > 0.7)以调查
  • 注意:相关性不意味着因果关系——明确标记此点
  • 检查非线性关系(例如,二次、对数)

模式理解和文档

模式文档模板

为团队使用记录数据集时:

## 表:[模式.表名]

**描述**:[此表代表什么]
**粒度**:[每行代表...]
**主键**:[列(s)]
**行计数**:[大约,带日期]
**更新频率**:[实时 / 每小时 / 每天 / 每周]
**所有者**:[负责的团队或个人]

### 关键列

| 列 | 类型 | 描述 | 示例值 | 备注 |
|--------|------|-------------|----------------|-------|
| user_id | 字符串 | 唯一用户标识符 | “usr_abc123” | 外键到 users.id |
| event_type | 字符串 | 事件类型 | “点击”、“查看”、“购买” | 15个唯一值 |
| revenue | 小数 | 交易收入(美元) | 29.99, 149.00 | 非购买事件为空 |
| created_at | 时间戳 | 事件发生时间 | 2024-01-15 14:23:01 | 在此列分区 |

### 关系
- 在 `user_id` 上连接到 `users`
- 在 `product_id` 上连接到 `products`
- `event_details` 的父表(1:多基于 event_id)

### 已知问题
- [列出任何已知数据质量问题]
- [为分析师注明任何陷阱]

### 常见查询模式
- [此表的典型用例]

模式探索查询

当连接到数据仓库时,使用这些模式发现模式:

-- 列出模式中的所有表(PostgreSQL)
SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name;

-- 列详情(PostgreSQL)
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'my_table'
ORDER BY ordinal_position;

-- 表大小(PostgreSQL)
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;

-- 所有表的行计数(通用模式)
-- 每个表运行:SELECT COUNT(*) FROM table_name

血统和依赖

探索不熟悉的数据环境时:

  1. 从“输出”表开始(报告或仪表板消费的表)
  2. 向上游追踪:哪些表馈入它们?
  3. 识别原始/暂存/集市层
  4. 映射从原始数据到分析表的转换链
  5. 注明数据在哪里被丰富、筛选或聚合