你的AI的EDA看起来没问题?教你识别潜在的错误

Dev.to AI 2026-07-22T11:19:16.230366

你的AI的探索性数据分析(EDA)看起来正确,但实际可能并非如此。下面告诉你如何判断它何时出问题。

你的AI生成的EDA看起来没问题。这里教你如何识别它是否真的有问题。

让AI编程助手对一个新数据集做探索性数据分析(EDA),它几秒钟就能输出一份看起来像模像样的初步分析结果:.describe()、相关性矩阵、一些分布图、一两个groupby,再配上一段文字总结。问题不在于这些输出是错的——往往它是对的。问题在于:无论结果正确与否,它看起来一模一样——而且那些导致出错的失败模式,恰恰是快速扫一眼看不出来的,因为既没有报错,也没有任何内容缺失的迹象。以下是AI生成EDA中反复出现的六种模式,每种都能悄无声息地产出一份表面上很干净的输出。

1. 先做统计概况,再转换数据类型

AI通常按这个顺序执行——但问题在输出中完全看不见:

print(df.describe())
# order_date 被排除 —— 它还是字符串
df["order_date"] = pd.to_datetime(df["order_date"])
# 转换晚了!

.describe() 会静默地丢弃非数值列。如果日期列在做统计概况时仍然是字符串对象,那它……就干脆不出现在汇总表中。没有任何报错。你拿到一张看起来很干净的表格,只是比你想检查的列数少了一列,而且没有任何提示告诉你哪一列被跳过了。修复办法不是改代码复杂度,而是调整顺序:类型转换必须放在第一个代码块里,也就是在计算任何统计数据之前。

2. 对右偏分布列直接用 .mean()

AI助手在几乎所有“典型值”问题里都默认用 .mean(),因为从统计角度看这显然是最先想到的操作。但对于收入、花费、会话时长这类有长右尾的数据,这个默认值会悄悄夸大“典型值”:

df.groupby("channel")["revenue"].mean()
# 几个大额B2B订单就把均值拉上去了

只汇报均值而不汇报中位数、计数和标准差的groupby,会得到一个技术上正确但实际上有误导性的数字。修复办法很简单——把这四个统计量一起算——但前提是你要知道主动提这个要求,因为AI不会自己标记出它选择的统计量其实是一个需要判断的决策。

3. 在分析缺失值之前就调用了 .dropna()

df = df.

```python
dropna()  # 提前应用,目的是让分析更干净

剖析的是剩下的数据,而不是原始数据

剖析的目的是描述缺失值的方式和位置——是随机缺失、集中在某一特定分段,还是与另一列相关。你先把缺失的行删掉,那个模式在你还没看到之前就消失了。之后输出的结果看起来很完整。确实,对于一个已经不再代表原始数据的数据集来说,它是完整的。

4. 静默的子集过滤

这一条最有可能在你不注意的情况下改变你的结论:

df = df[df["status"] == "delivered"]  # ← 脚本中途添加的,下游没有任何标注

这行代码之后的每一个相关性分析、每一个 groupby、每一个图表,都只针对已配送订单——但输出结果中没有任何说明。一个利益相关者读到的“42%的订单来自企业渠道”,实际上无法知道这只是已配送订单的42%,除非碰巧有人向上滚动到这一行没有注释的过滤代码。

5. 叙事性摘要悄悄断言因果关系

AI生成的EDA结尾往往有一段通俗语言的评述。这段评述里,因果语言会悄悄渗入——“单价驱动了收入”、“强相关性证实了X”——而分析本身只建立了相关性。评述上方的数字通常没问题。解释这些数字的散文才是范围蔓延发生的地方,因为叙事生成和统计严谨性不是同一个任务,即使同一个模型在同一个回答中同时输出了两者。读数字。把叙事段落当作需要修改的初稿,而不是可供引用的结论。

6. 把“没有发现问题”当成“数据是干净的”

如果你让AI检查数据质量问题,它报告没有发现问题,这并非确认。它只意味着它运行的检查没有发现任何东西——这完全不能说明它没有运行的检查。字符串列上的基数、结构性缺失模式、多变量异常值:除非有人特意去找,否则它们不会自己冒出来。

这六种模式都有一个共同点:输出看起来完整,而完整性正是快速审查所检查的内容。

你的AI生成的EDA看起来没问题,但怎么判断它其实有问题?

为什么“只看代码”并不是答案

在运行AI生成的代码之前,先审查一遍,确实能发现一些问题——比如统计计算之前的类型转换、均值和中位数混用、子集过滤条件等,因为这些在脚本里是肉眼可见的。但单纯靠审查代码,发现不了第5和第6类问题:藏在总结性描述里的因果性语言,以及“未发现问题”这种看似干净的结论所带来的虚假自信。要抓住这些问题,你得读输出结果,而不仅仅是代码,并且要用你已有的领域知识去对照它。

一份经得起推敲的EDA——无论是否有AI辅助——意味着你能对所有以下问题回答“是”:

这些其实和AI无关。它一直是区分一份经得起推敲的分析和一份“看起来合理”的分析的核心准则。唯一变化的是,现在生成“看起来合理”的输出变得更快了——这意味着这份检查清单比以前更重要,而不是相反。

这也是SophiArch的探索性数据分析课程背后的框架——课程中有一个实验环节,学员会拿到一份完整的AI生成的EDA笔记本,要求在它被交给利益相关者之前,找出上面提到的那几类问题。

AI 做的 EDA 看似正确,怎么知道它有问题?

查看原文