2. 数据质量诊断与预处理实战

反应过程数据在进入趋势分析之前,几乎不可能“天生干净”。DCS 采集周期抖动、在线分析仪反吹、热电偶偶发跳变、催化剂缓慢失活引起的基线漂移,都会让曲线在“真实工艺变化”之外叠加一层“数据自身的毛病”。如果直接拿原始数据判读趋势,很容易把一次仪表反吹误判为反应异常,或把缓慢漂移当成转化率下降。本节围绕缺失值、异常点、噪声与漂移四类问题,完成一次可复现的清洗、插补与平滑实操,并评估预处理对趋势判读的实际影响。

一、先诊断,再动手

拿到一段反应器出口温度与转化率的历史数据,第一步不是急着填补或滤波,而是做质量画像。常用手段包括:统计缺失率与缺失分布(随机零星缺失还是整段中断)、用 3σ 或箱线图粗筛离群点、观察一阶差分的分布判断噪声水平、对长时间序列做移动平均后与原序列相减观察慢变残差以识别漂移。诊断结论决定后续方法选择——整段中断适合基于工艺机理或相关变量的回归插补,零星缺失用线性或样条插补即可;孤立尖峰用中值或 Hampel 滤波,而持续性偏移则要考虑基线校正而非简单剔除。

诊断阶段建议先固定一个分析窗口(例如某班次 8 小时、采样周期 5 s 的约 5760 个点),所有统计量都在同一窗口内计算,避免不同时段混算导致结论漂移。

二、缺失值处理:插补不是“填个数”

以反应器床层温度为例,假设某段 10 分钟因通讯中断出现连续缺失。若缺失段前后温度平稳,线性插补误差可接受;若缺失跨越一次负荷调整,线性插补会“抹平”真实阶跃,此时应优先用与温度强相关的变量(如进料量、冷却水阀位)建立回归插补,或直接标记为“不可用”而不插补。实操中常用 pandas 的 interpolate 做时间索引线性插补,用 limit 参数限制最大连续插补长度,超过阈值则保留 NaN 并打质量标签,避免“插补出来的假数据”被当作实测值参与判读。

import pandas as pd
# df 以时间为索引,temp 为床层温度
df['temp_lin'] = df['temp'].interpolate(method='time', limit=12)   # 最多连续插补12个点
df['temp_flag'] = df['temp'].isna().astype(int)                    # 原始缺失标记
df['temp_filled'] = df['temp_lin'].fillna(df['temp'].ffill())      # 超限部分前向保持并另标

三、异常点与噪声:区分“尖峰”和“真实波动”

异常点通常是单点或短时尖峰,噪声则是持续存在的高频抖动。二者处理方式不同:尖峰用 Hampel 滤波(滑动窗口中位数 ± n×MAD)识别并替换,噪声用低通或移动平均平滑。关键是阈值不能拍脑袋——以转化率序列为例,若正常工况下一阶差分标准差约为 0.15%,则单点跳变超过 3 倍标准差(约 0.45%)可判为可疑;但若正处于开车升负荷阶段,真实变化率本就偏大,阈值需放宽或改用变化率与工艺事件对齐后再判断。

四、漂移:慢变偏差的识别与校正

漂移最隐蔽。在线色谱基线漂移、热电偶冷端补偿老化,都会让测量值在数小时内缓慢偏移,而曲线“看起来仍然平滑”。识别方法是取长窗口移动平均(如 2 小时)与工艺参考量(如根据物料平衡推算的理论转化率)比较,若残差呈单调趋势而非随机分布,即提示漂移。校正可采用分段线性去趋势或基于参考点的偏移量扣除,但必须保留原始列,校正只作用于分析副本。

反应过程数据预处理链路与趋势判读影响 原始采集信号 尖峰+噪声+缺失 质量诊断 缺失率 / 3σ离群 差分噪声水平 长窗残差趋势 → 方法选择 缺失值插补 时间线性 / 回归 / 标记不可用 异常点剔除 Hampel / MAD 阈值 噪声平滑 移动平均 / 低通滤波 漂移校正 长窗残差 / 参考量比对 清洗后分析副本 保留原始列,仅副本处理 未预处理判读风险 尖峰误判为反应异常;漂移误判为转化率下降 缺失段被线性“抹平”掩盖真实阶跃 预处理后判读收益 趋势斜率更接近工艺真实变化;异常事件可追溯 质量标签保留,判读结论可复核

五、评估预处理对趋势判读的影响

处理完不能只看“图变好看了”,要用可量化指标验证。建议对同一段数据分别计算原始序列与清洗后序列的趋势斜率(如对 2 小时窗口做线性拟合取斜率),比较两者差异;若差异超过工艺可接受范围(例如转化率趋势斜率相差 0.05%/h 以上),说明预处理改变了判读结论,必须回溯是哪一步造成的。同时保留“处理前后对照曲线”和“质量标签列”,让任何一次趋势判读都能追溯到数据来源。下表给出一份可直接套用的预处理记录示例(数值为教学假设)。

处理项方法/参数影响点数趋势斜率变化判读结论是否改变
缺失插补时间线性,limit=1248+0.008%/h否
尖峰剔除Hampel,窗口7,3×MAD15-0.012%/h否
噪声平滑移动平均,窗口5全部-0.003%/h否
漂移校正2h长窗残差去趋势全部-0.061%/h是(需复核)

这张表的价值在于:漂移校正使趋势斜率变化最大,说明该段数据确实存在慢变偏差,校正后判读结论发生改变,必须回到工艺侧确认是仪表漂移还是真实工况变化,而不能默认“校正后就是对的”。预处理的目标不是让曲线漂亮,而是让趋势判读更接近工艺真实,并且每一步都可解释、可回溯、可复核。