探索性数据分析
EDA 与数据质量。
35 分钟
探索性数据分析
EDA(Exploratory Data Analysis) 在建模前回答:数据是否可信、分布如何、变量间有何关系。本课对齐 /roadmaps/ai-data-scientist 的 Exploratory Data Analysis 节点。
学习目标
- 建立标准 EDA checklist 并文档化发现
- 用可视化驱动假设,而非先建模后找解释
- 识别缺失、重复、异常与泄漏风险
- 输出一页数据质量报告供团队评审
核心概念
推荐 EDA 顺序:
| 步骤 | 动作 | 产出 |
|---|---|---|
| 结构 | info() / 行数列数 / 主键 | 数据字典草稿 |
| 质量 | 缺失率、重复行、类型错误 | 清洗待办列表 |
| 单变量 | 分布、长尾、零膨胀 | 变换/截断建议 |
| 双变量 | 相关、分群对比 | 特征候选 |
| 泄漏 | 未来信息是否进入特征 | 建模禁区清单 |
CodeRoadMap 场景示例:预测「7 日内是否完课」时,不能使用第 8 天产生的登录日志 作为特征,否则离线 AUC 虚高。
示例
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv("learning_events.csv")
print(df.shape)
print(df.isna().mean().sort_values(ascending=False).head())
# 数值列分布
num = df.select_dtypes("number")
num.describe().T
# 完课 vs 未完课的关键指标对比
sns.boxplot(data=df, x="completed_7d", y="lessons_started")
plt.title("Lessons started by completion label")
plt.show()
# 相关热力图(仅数值特征)
sns.heatmap(num.corr(numeric_only=True), cmap="coolwarm", center=0)
EDA 结论应写入 reports/eda.md:发现 3 条、风险 2 条、建议特征 5 个。
练习
- 对练习数据集完成完整 EDA checklist
- 找出至少 1 个潜在标签泄漏字段并说明原因
- 绘制 2 张支持/反驳业务假设的图
小结
没有高质量 EDA,就没有可信模型。 下一课进入监督学习建模流程。
加载本节练习…