4. 数据预处理与清洗实战
聚氨酯连续发泡线的数据在进入分析模型之前,几乎不可能"开箱即用"。发泡线通常由高压发泡机、多组分计量泵、混合头、传送带、温控单元和在线检测装置共同构成,数据源包括PLC周期扫描的工艺量(各组分开度、总流量、混合头压力、料温、带速、环境温湿度)、离线化验数据(乳白时间、拉丝时间、自由泡密度、压缩强度)以及批次与配方信息。这些数据在采样频率、时间基准、量纲和可信度上差异极大,直接建模会把"数据问题"误判为"工艺问题"。本节按缺失值、异常值、噪声、时间对齐四条主线展开,并给出可复用的处理顺序与示例参数。
一、先明确处理顺序与时间基准
清洗不是随意挑方法,而是有依赖顺序的:时间对齐 → 缺失值处理 → 异常值识别 → 噪声平滑 → 标准化。原因在于,若先插补再对齐,插补值会被错误地映射到别的时间点;若先平滑再识别异常,尖峰会被平滑"吃掉",真正的设备故障或人为误操作就被掩盖。时间基准建议统一到UTC时间戳(毫秒级),并明确参照约定:本文所有"时间差"均指后一时刻减前一时刻,正值表示滞后。
连续发泡线的典型采样配置可参考下表(示例参数,非实测):
| 数据源 | 典型采样周期 | 常见问题 | 处理优先级 |
|---|---|---|---|
| PLC工艺量(流量、压力、温度) | 100 ms~1 s | 通信丢包、量程跳变 | 高 |
| 带速与切泡信号 | 事件触发 | 时间戳漂移 | 高 |
| 在线密度/厚度检测 | 1~5 s | 噪声大、偶发空值 | 中 |
| 离线化验(乳白/拉丝时间) | 每批1次 | 与工艺量时间不对应 | 中 |
| 配方与批次记录 | 按批次 | 人工录入错误 | 低 |
二、时间对齐:把多源数据落到同一时间轴
对齐的核心是"重采样 + 合并"。对高频工艺量,通常降采样到1 s网格,聚合方式按物理意义选择:流量、压力用均值;温度用均值;切泡计数用求和;带速用均值。对低频化验数据,采用"前向填充 + 有效期窗口",即一条化验结果只在其后一定时间窗内有效(例如乳白时间结果有效期为2小时),超出窗口则置为缺失,避免把过期结论套到新工况上。
import pandas as pd
# 统一到 UTC,并按 1s 网格重采样
plc = plc.set_index(pd.to_datetime(plc["ts"], utc=True))
grid = plc.resample("1s").agg({
"polyol_flow": "mean", # 组分A流量 kg/min
"iso_flow": "mean", # 组分B流量 kg/min
"mix_press": "mean", # 混合头压力 bar
"belt_speed": "mean", # 带速 m/min
"cut_count": "sum", # 切泡次数
})
# 化验数据按有效期窗口前向填充
lab = lab.set_index(pd.to_datetime(lab["ts"], utc=True)).sort_index()
lab = lab.reindex(grid.index, method="ffill", tolerance=pd.Timedelta("2h"))
merged = grid.join(lab, how="left")
对齐后要检查两件事:一是时间戳是否单调递增、有无重复;二是合并后行数是否与网格长度一致。若出现大量NaN集中在某段时间,往往是通信中断而非工艺异常,应单独标记为"采集中断段",不要与真实缺失混为一谈。
三、缺失值:先判断机制,再选方法
缺失分三类:完全随机缺失(如偶发丢包)、随机缺失(与其它变量相关,如高负荷时检测仪掉线)、非随机缺失(如超量程被系统置空)。处理前先统计每列缺失率与连续缺失长度。经验做法:缺失率低于5%且为孤立点时,用线性插值或前后均值;连续缺失超过30 s的段,不插补,直接标记并在建模时剔除该段;对化验类低频量,用"最近有效值 + 有效期"而非插值,因为插值会伪造不存在的化验结果。
插补后必须留一列is_imputed标记,便于后续区分真实值与生成值。对关键工艺量(如总流量),建议同时保留原始列与插补列,避免不可逆覆盖。
四、异常值与噪声:物理边界 + 统计规则双保险
异常值识别不能只靠3σ。发泡工艺量有明确物理边界:组分流量不可能为负,混合头压力通常在几十到两百bar量级,料温在20~30℃区间。先用物理规则做硬过滤,再用统计方法做软识别。对近似正态的变量用Z分数(|Z|>3);对偏态明显的流量用IQR(超出Q1−1.5IQR或Q3+1.5IQR);对时间序列用滚动中位数绝对偏差(MAD),窗口取60 s,阈值取|x−median| > 3×1.4826×MAD,这样能识别"单点尖峰"而不误伤正常的配方切换斜坡。
噪声平滑要区分对象:对压力、流量这类含高频测量噪声的信号,用滑动平均(窗口5~15 s)或Savitzky-Golay滤波(窗口11、二阶多项式),后者能更好保留斜坡的拐点;对切泡计数这类事件量,绝不做平滑,否则会改变计数。平滑只作用于建模输入,原始列保留用于追溯。
五、标准化与结果判读
标准化按变量类型选择:流量、压力、温度用Z-score(均值0、标准差1);带速、切泡间隔等右偏量先取对数再标准化;比例类(如组分比)可直接用Min-Max缩放到[0,1]。标准化参数必须只用训练集拟合,再应用到验证集,防止信息泄漏。
下图给出本节四条主线的处理链路与关键判断点,可作为清洗流程的速查图:
清洗是否达标,用三个可观察指标判断:一是关键工艺量(总流量、混合头压力)的缺失率降到1%以下且无超过30 s的连续空洞;二是异常标记数量与设备报警记录大致吻合,若异常标记远多于报警,说明阈值过严;三是标准化后各变量均值接近0、标准差接近1,且训练集与验证集分布无显著偏移。满足这三条,数据才具备进入配方—工艺关系分析或质量预测模型的基础条件。