news 2026/9/20 4:00:38

用 Evidently 给数据做体检:缺失值、重复值、异常值一次查清

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 Evidently 给数据做体检:缺失值、重复值、异常值一次查清

用 Evidently 给数据做体检:缺失值、重复值、异常值一次查清

【免费下载链接】evidentlyEvidently is ​​an open-source ML and LLM observability framework. Evaluate, test, and monitor any AI-powered system or data pipeline. From tabular data to Gen AI. 100+ metrics.项目地址: https://gitcode.com/GitHub_Trending/ev/evidently

模型上线第三天,预测准确率突然掉下来。排查半天发现模型本身没动,是上游一个字段开始大面积缺值——这就是典型的"先查数据,再怀疑模型"。Evidently是一个开源的 ML 与 LLM 可观测框架,覆盖 100+ 指标,一次 Report 就能把数据质量检测里的缺失值、重复值、异常值全部过一遍。

Evidently 是什么:给 ML 数据做体检的工具

一句话定位:Evidently 帮你给数据和模型做"体检"。它不只是评估一次,而是可以周期性地在生产上反复跑同一套检查,跟踪数据质量随时间的变化,这也是它作为 ML 监控工具的核心价值。思路很直接:把"数据是不是出问题了"这个模糊问题,拆成一组可度量的指标,每个指标还自带默认的通过/失败规则。

五分钟跑通第一次数据体检

安装步骤

pip install evidently # 或者从源码安装 git clone https://gitcode.com/GitHub_Trending/ev/evidently

生成第一份数据质量报告

第一次跑不用配置任何东西,用预设拼一个 Report,run 之后存成 HTML:

import pandas as pd from evidently import Report from evidently.presets import DataSummaryPreset df = pd.read_csv("train.csv") snapshot = Report([DataSummaryPreset()]).run(df) snapshot.save_html("data_quality_report.html")

打开生成的 HTML,每个字段的行数、缺失数、分布一目了然。之后你可以把预设换成单个指标做深度排查,也可以在run()里传入参考数据集做漂移对比。

三类数据问题逐个排查

缺失值:哪些字段在漏数据

现象长什么样:某字段偶尔出现空值,或整列突然全是 NaN。模型如果默认把缺失填 0,会悄悄"毒化"预测结果。

Evidently 怎么查DatasetMissingValueCount看全表的缺失总数和缺失占比,MissingValueCount(column="...")逐列下钻。检测逻辑在 src/evidently/metrics/column_statistics.py,默认测试规则是"缺失数等于 0"。

结果怎么读:重点看两个数——绝对数量和占比。占比低(比如 1% 以下)的文本字段缺失可以忽略;但关键数值特征占比突然抬升,多半是上游数据源出了问题,对比参考数据集能立刻看出来。

重复值:数据集里有多少"双胞胎"

现象长什么样:数据里出现完全相同的行,样本被重复计数,统计指标失真,严重时模型会"背题"。

Evidently 怎么查DuplicatedRowCount统计完全重复的行数,DuplicatedColumnsCount统计和其他列完全相同的列——后者通常意味着 ETL 环节复制粘贴或 join 写错了。实现都在 src/evidently/metrics/dataset_statistics.py。

结果怎么读:默认规则是"两者都应为 0"。重复行数从 0 变成非 0,优先怀疑采集重复或管道重跑;发现重复列更省事,能直接定位是哪个字段被错误复制。

异常值:如何揪出离群点

现象长什么样:一个极端值是其他数据的百倍,训练后指标整体被带偏。

Evidently 怎么查:column_statistics 模块里的MaxValueMinValueQuantileValueStdValue帮你锁定各列的极值与分位数;OutRangeValueCount则直接数出落在你定义合理区间之外的值有多少。

结果怎么读:先看最大值和中位数的量级差,例如最大值是 median 的一千倍,就需要分箱或对数变换。OutRangeValueCount的结果越偏离预期,越应该怀疑采集错误而不是真实业务波动。

报告与可视化:把数据质量摆到台面上

HTML 报告适合留档和分享:snapshot.save_html()生成独立页面,浏览器直接打开,贴进周报或事故复盘都很方便。

持续监控可以接 Grafana:定时批量计算指标、写入数据库,再搭一块面板实时盯。仓库里的 examples/grafana/ 给了完整示例:

数据质量从"偶尔看一眼"变成"异常自动报警",才是 ML 监控真正的价值所在。

进阶:自定义检测规则

内置的 100+ 指标覆盖大多数场景,但"金额字段不能为负""单批数据缺失率不能超过 5%"这类业务规则,往往需要自己写。参照 src/evidently/metrics/data_quality.py 里的实现即可,模式统一:一个指标类加一组测试条件,读懂一个就能照葫芦画瓢写一个。

上手建议

  • 从一张真实表开始:先别追求功能全,用DataSummaryPreset跑通你手头的一个真实业务数据集。
  • 留一份参考集:和一份"历史上正常"的数据对比,数据质量检测的价值会翻倍。
  • 阈值按业务校准:默认测试规则只是起点,关键字段的上下限要按业务容忍度调整。
  • 把报告挂上仪表板:一次性 HTML 用来复盘,持续监控才能拦住下一次事故。

先查数据,再怀疑模型——这个顺序别搞反。Evidently 把"数据好像不太对"变成了可检查的数字,下一步很简单:拿一份你手上的真实数据,把第一份 Report 跑出来。

【免费下载链接】evidentlyEvidently is ​​an open-source ML and LLM observability framework. Evaluate, test, and monitor any AI-powered system or data pipeline. From tabular data to Gen AI. 100+ metrics.项目地址: https://gitcode.com/GitHub_Trending/ev/evidently

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 3:58:43

Codex + MCP 配置实战指南:从环境搭建到工具接入

我最早接触 Codex 是通过命令行跑一个小任务:把仓库里的几段重复代码抽成公共函数。原本预期它和普通补全工具差不多,结果它在没有我手动改文件的情况下,自己完成了重构、跑了测试、还顺手改了文档格式。当时我就意识到,这东西的真…

作者头像 李华
网站建设 2026/9/20 3:57:10

Windows软件卸载残留怎么办?注册表与Installer清理完全指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 3:56:36

Matlab蒙特卡洛模拟熔池晶粒生长:Potts模型实现与晶粒尺寸统计

很多人第一次听到“蒙特卡洛模拟熔池晶粒生长”这个组合,会觉得又是蒙特卡洛、又是熔池、又是晶粒长大的,门槛肯定不低。但只要你在Matlab里把Potts模型的框架搭过一次,再把晶粒尺寸、晶粒数目这些统计指标用脚本跑出来,就会明白这…

作者头像 李华
网站建设 2026/9/20 3:55:39

Proteus自建元件三模型构建:符号、封装与仿真模型协同设计

简介:本资源是一份面向电子设计与嵌入式系统开发者的Proteus VSM自建元件库专题技术文档,聚焦于高级仿真建模能力提升,解决实际项目中标准元件缺失、需定制LCD等复杂外设模型的痛点,适用于单片机课程教学、毕业设计及硬件仿真验证…

作者头像 李华
网站建设 2026/9/20 3:55:38

GD32定点查表sin优化:从117μs到8.3μs的确定性提速

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华