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 数据质量检测要解决的场景。
Evidently 是什么、为什么选它做 ML 数据监控
Evidently 是一个开源 Python 框架,用于评估、测试和监控 ML 与 LLM 系统。选它的理由:
- 开源,
pip install evidently即可使用,报告可导出为 HTML、JSON; - 覆盖验证到生产监控全链路:离线报告、测试套件、监控看板;
- 同一套框架支持 LLM 评估,数据和模型指标可以放一起盯。
三步跑通数据质量检测
安装 Evidently 与最小依赖
pip install evidently数据源就是一份 pandas DataFrame,无需额外依赖。
写一份最小检测配置
最小可运行配置,缺失值检测、重复值筛查、异常值统计一次覆盖:
import pandas as pd from evidently import Report from evidently.metrics import ( MissingValueCount, DuplicatedRowCount, MinValue, MaxValue, MeanValue, StdValue, ) report = Report([ MissingValueCount(column="user_age"), DuplicatedRowCount(), MinValue(column="user_age"), MaxValue(column="user_age"), MeanValue(column="user_age"), StdValue(column="user_age"), ], include_tests=True)这些指标都在src/evidently/metrics/dataset_statistics.py和src/evidently/metrics/column_statistics.py中实现。
生成并打开报告
snapshot = report.run(current_data=df) snapshot.save_html("report.html")run返回 Snapshot,save_html导出后用浏览器打开即可。带include_tests=True时,每个指标附默认测试,未通过项会在报告里标红。
报告里的三类指标怎么读
缺失值:看什么、什么阈值算异常
MissingValueCount给两个数:count(缺失数)和 share(占比)。默认测试是缺失数为 0 才通过;提供reference_data后,会对比缺失占比相对参考数据的差异是否超过 10%。实操阈值:关键特征列 share > 1% 就该排查上游,某列接近 100% 缺失通常是字段映射错了,而不是数据量问题。
重复值:行级 vs 列级,各自危险在哪
DuplicatedRowCount看整条记录被重复写入,危险点在订单、日志这类事件流:重复会直接扭曲指标和训练样本权重。DuplicatedColumnsCount看列级重复:两列数值完全一致,多数是特征冗余而非数据错误,先想到降维,而不是急着修数据。
异常值:用 min / max / mean / std 做初步判断
不依赖复杂算法,先看四个统计量:max 远大于 mean 说明有极端高值点;min 为负或出现不可能取值就是脏数据;std 相对参考数据明显变大,说明整列离散度变了。要进一步量化,换OutRangeValueCount(column="user_age", left=0, right=150)直接统计超出业务合法区间的值数。
用 Grafana 看板持续盯数据
单次报告只是快照,持续盯才叫 ML 数据监控。做法是把 report 按天定时跑、导出快照,再交给 Grafana 渲染成时间序列。仓库自带现成示例:examples/grafana/下有数据漂移和 LLM 评估两套看板,含 docker-compose,可以直接参考部署。
几个容易踩的坑
- 🔎 先统一列的编码和类型再统计缺失:上游传 "N/A"、"0" 占位,按 NaN 统计会漏掉。
- 📐 重复列先怀疑特征冗余,不是数据错误;列间相关性高不等于列重复,可用相关矩阵区分。
- 📊 报告里基于统计检验的 p-value 别只看大小:大样本下微小差异也显著,要结合业务量级判断。
- ⚙️ 很多默认测试在给了
reference_data后阈值更严,对比结果前先确认参考数据的口径和日期范围。
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
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考