【导航台账】制造业数据与AI践行者老蒋的技术博客全系列文章汇总(持续更新)
📌 文章摘要
针对制造业传感器数据脏、质量难管控、导致 OEE 计算失真的痛点,本文从零搭建数据质量智能巡检 Agent,覆盖空值、重复值、异常值(3σ 原则)、时间延迟四大检测能力,支持人工触发与定时巡检双模式,配套 Web 可视化看板。方案对标 GB/T 39116-2020 智能制造标准,可直接作为数据质量自动化的落地参考,文章附完整工程源码。
文章目录
开篇:痛点与场景
兄弟们,Case01到Case03我们搞定了制造Agent的“手脚”、“记忆”和“协同能力”。但班组长小刘在使用过程中,提出了一个更深层次的问题。
他说:“老蒋,你们搞数据的人天天喊‘数据驱动决策’。但我这边传感器数据经常出问题——温度突然飙到200度、振动值变成负数、有时候整行数据都是空的。这种数据拿去算OEE,算出来的结果你敢信吗? ”
我当时的第一反应是:这不科学啊……😀
但小刘说得对。在智联工坊的实际运营中,数据质量问题无处不在:
-
空值:传感器偶尔“罢工”,上报空数据
-
重复:网络抖动导致同一条数据被重复上报
-
异常值:设备故障导致数值突变(如温度瞬间飙到999℃)
-
数据延迟:本应每5分钟上报一次的数据,半小时没到
📌我接触过的十几家制造工厂,80% 都有这个问题 —— 花几百万上了传感器、MES 系统,最后因为没人做数据质量管控,算出来的报表没人信,数据驱动成了一句空话。
这些“脏数据”如果没被发现,会直接影响OEE计算、质量分析、预测性维护等上层应用。数据质量是数据驱动决策的“地基”,地基不牢,上面盖什么都白搭。
本文要解决的痛点:构建一个数据质量智能巡检Agent,能自动检测数据质量问题,生成质量报告,并在发现问题时主动通知相关人员。
适合谁读:制造业数据工程师、IT运维人员,以及关心数据质量管理的开发者。
脱敏声明:本文基于虚拟工厂“智联工坊”场景,所有数据均已脱敏处理。
正文
方案设计
| 模块 | 功能 | 技术实现 |
|---|---|---|
| 数据加载 | 加载模拟传感器数据(CSV) | Pandas |
| 空值检测 | 计算各列空值率,超过阈值报警 | Pandas + 阈值配置 |
| 重复检测 | 检测完全重复的行,计算重复率 | Pandas duplicated |
| 异常值检测 | 基于3σ原则检测数值列异常 | Numpy 标准差计算 |
| 延迟检测 | 检测时间戳间隔是否超过阈值 | Pandas diff + 阈值配置 |
| 定时巡检 | 每分钟自动执行检测 | APScheduler |
核心实现
工程目录结构
cases/case04_data_quality_agent/
├── config.py # 配置文件(阈值、路径、端口)
├── tools/ # 检测工具集
│ ├── data_loader.py # 数据加载
│ ├── null_checker.py # 空值检测
│ ├── duplicate_checker.py # 重复检测
│ ├── outlier_checker.py # 异常值检测(3σ原则)
│ └── delay_checker.py # 延迟检测
├── agent/
│ └── builder.py # 注册5个工具
├── scripts/
│ ├── 01_generate_sensor_data.py # 生成模拟数据(含脏数据)
│ ├── 02_test_cli.py # CLI交互测试
│ └── 03_scheduled_check.py # 定时巡检演示
└── web/ # Web看板
├── app.py
└── templates/index.html
Step 1:生成模拟数据(含脏数据注入)
运行 scripts/01_generate_sensor_data.py:
python 01_generate_sensor_data.py
执行效果:
📊 开始生成模拟传感器数据...
🧹 注入脏数据: 共 500 行 (5%)
- 空值: 199 行
- 重复: 99 行
- 异常值: 199 行
✅ 数据已保存到: .../data/sensor_data.csv
总行数: 10000
列: ['timestamp', 'line', 'temperature', 'vibration', 'current']
核心代码(异常值注入):
# 异常值注入逻辑
outlier_indices = random.sample(range(num_rows), outlier_count)
for idx in outlier_indices:
col = random.choice(["temperature", "vibration", "current"])
if col == "temperature":
df.loc[idx, col] = random.choice([200, -50]) # 温度瞬间飙到200或降到-50
elif col == "vibration":
df.loc[idx, col] = random.choice([10, -5])
else: # current
df.loc[idx, col] = random.choice([500, -100])
Step 2:核心检测工具
空值检测:
def check_null(df: pd.DataFrame) -> str:
null_counts = df.isnull().sum()
total_rows = len(df)
for col in df.columns:
null_rate = null_counts[col] / total_rows
if null_rate > NULL_THRESHOLD:
alert_columns.append(col)
return json.dumps({
"status": "warning" if alert_columns else "ok",
"details": result,
"alert_columns": alert_columns,
"threshold": NULL_THRESHOLD,
"message": f"发现 {len(alert_columns)} 列空值率超标" if alert_columns else "空值率正常"
}, ensure_ascii=False)
异常值检测(3σ原则):
def check_outlier(df: pd.DataFrame) -> str:
numeric_cols = df.select_dtypes(include=[np.number]).columns
for col in numeric_cols:
mean = series.mean()
std = series.std()
if std == 0:
continue
lower = mean - OUTLIER_SIGMA * std
upper = mean + OUTLIER_SIGMA * std
outliers = series[(series < lower) | (series > upper)]
total_outliers += len(outliers)
return json.dumps({
"status": "warning" if total_outliers > 0 else "ok",
"total_outliers": total_outliers,
"message": f"发现 {total_outliers} 个异常值" if total_outliers > 0 else "无异常值"
}, ensure_ascii=False)
Step 3:Agent组装
agent/builder.py 注册5个工具:
def _register_tools(self) -> List[BaseTool]:
tools = []
@tool
def load_data() -> str:
"""加载传感器数据CSV文件,返回数据摘要"""
df = load_sensor_data()
return get_data_summary(df)
tools.append(load_data)
@tool
def null_check() -> str:
"""检测数据中的空值比例"""
return check_null(load_sensor_data())
tools.append(null_check)
# duplicate_check, outlier_check, delay_check 同理...
return tools
运行验证
执行 02_test_cli.py:
python 02_test_cli.py

测试用例1:空值检测
🧑💻 你: 空值检测
> Entering new AgentExecutor chain...
Action: load_data
Action Input: {}
Observation: {"total_rows": 10000, "columns": ["timestamp", "line", "temperature", "vibration", "current"]}
Thought: 数据加载成功,继续执行空值检测
Action: null_check
Action Input: {}
Observation: {"status": "ok", "details": {"temperature": {"null_count": 51, "null_rate": 0.0051}, "vibration": {"null_count": 80, "null_rate": 0.008}, "current": {"null_count": 65, "null_rate": 0.0065}}, "alert_columns": [], "message": "空值率正常"}
Final Answer: 空值检测完成,空值率正常,无超标列。
🤖 Agent: 空值检测完成,空值率正常,无超标列。
测试用例2:全面检测
🧑💻 你: 帮我检查一下数据质量
> Entering new AgentExecutor chain...
Action: load_data → null_check → duplicate_check → outlier_check → delay_check
Observation: 空值率正常,重复率0%,发现199个异常值,延迟正常
Final Answer: 数据质量检测完成。发现199个异常值,主要集中在温度、振动和电流三个数值列中。建议进一步调查这些异常值的原因。
🤖 Agent: 数据质量检测完成。发现199个异常值,主要集中在温度、振动和电流三个数值列中。建议进一步调查这些异常值的原因。
Step 4:定时巡检
执行 03_scheduled_check.py:
python 03_scheduled_check.py
-
每分钟自动执行一次质量检测
-
报告自动保存到
reports/目录 -
按
Ctrl+C停止
生成的报告示例(reports/quality_report_*.json):
{
"timestamp": "2026-08-12T14:30:00",
"data_summary": {"total_rows": 10000, "columns": ["timestamp", "line", "temperature", "vibration", "current"]},
"null_check": {"status": "ok", "alert_columns": [], "threshold": 0.05},
"duplicate_check": {"status": "ok", "duplicate_rate": 0.0},
"outlier_check": {"status": "warning", "total_outliers": 199},
"delay_check": {"status": "ok", "max_interval_seconds": 5.0, "threshold_seconds": 60}
}
Step 5:Web看板
启动Web服务:
# 回到项目根目录
cd /path/to/javy21_manufacturing_ai_practice
python -m cases.case04_data_quality_agent.web.app
浏览器打开 http://localhost:5004,查看实时质量状态仪表板。

Web界面功能:
-
四大质量指标卡片(空值、重复、异常、延迟)
-
状态标识(正常/异常)
-
每30秒自动刷新
总结:价值提炼
本文解决了什么:构建了一个数据质量智能巡检Agent,能自动检测空值、重复、异常、延迟四大问题,并支持人工触发和定时巡检两种模式。
三个关键认知:
- 数据质量巡检不是一次性排查,是常态化机制。规则明确、重复度高的巡检工作,天然适合 Agent 来做,人只需要处理异常告警。
- 异常检测要分层:基础规则层(空值、重复)+ 统计规则层(3σ 原则)+ 业务规则层(如温度不可能超过 120℃)。本文实现前两层,业务规则可按工厂场景按需扩展。
- Agent 做数据巡检的核心价值不是 “发现问题”,是 “把问题按标准流程闭环”—— 检测→告警→生成报告→跟进整改,这是未来工厂数据运维的标准模式。
可复用的方法论:
「原子化工具拆分 + Agent 统一调度 + 结构化返回 + 定时 / 人工双触发」的框架,可以直接复用到所有规则明确的重复性数据运维场景,比如台账巡检、报表核对、主数据校验等。
智能工厂国标落标
本方案对应 GB/T 39116-2020《智能制造能力成熟度模型》中「数据资源」能力域的「数据质量」子项,实现了数据质量自动化巡检、问题自动预警、质量报告自动生成,可直接用于智能制造能力成熟度三级及以上的申报技术佐证。
系列导航
-
专栏系列: 制造业数据与AI落地实战 AI赋能数据开发工程手册
互动与交流
兄弟们,你们日常处理最多的脏数据类型是哪一种?
A. 空值 / 缺失值
B. 异常跳点 / 离谱数值
C. 重复数据
D. 时间戳错乱 / 延迟
评论区扣字母,我选 3 位兄弟,直接发完整工程源码包 + 数据质量检测通用模板。
关于作者
制造业数据与AI践行者老蒋,23年IT老兵。聚焦制造业数据架构与AI融合落地。全流程实战,全源码开源。
标签:#LangChain #AI Agent #数据质量 #智能制造 #传感器数据 #异常检测 #3σ原则 #巡检Agent #制造业数字化

373



被折叠的 条评论
为什么被折叠?



