4. 能耗数据清洗与预处理实战
能耗基线建立的质量,很大程度上取决于进入建模环节的数据是否"干净"。计量表计故障、通信中断、人工抄表错位、单位混用等问题,在真实能耗数据中几乎必然出现。本节围绕一个典型的企业用电数据集,完整走一遍异常值识别、缺失值处理、数据对齐与单位统一的处理链路,最终输出一份可直接用于基线建模的可用数据集。
一、示例数据集与问题诊断
假设某工厂有三条生产线(A线、B线、C线),各配一块智能电表,以15分钟为间隔采集有功电量(kWh),同时保留一条来自旧系统的日报表数据(单位为"度",即kWh,但部分记录被误录为"万度")。取2024年3月1日至3月7日共7天数据,原始数据存在以下典型问题:
- 异常值:A线3月3日14:00出现单点电量 980 kWh,而该时段历史均值约 120 kWh,明显偏离;
- 缺失值:B线3月5日因网关断电,连续 6 个采集点(约1.5小时)为空;
- 时间不对齐:C线电表时钟比标准时间快 8 分钟,导致同一物理时刻的记录错位;
- 单位不统一:日报表中部分记录以"万度"录入,与15分钟粒度的 kWh 混用。
下面这张图展示了从原始数据到可用数据集的完整处理链路,以及每一步的输入、处理动作与输出状态:
二、异常值识别:先标记,不急于删除
异常值识别常用两类判据。第一类是统计判据:对某条产线某时段的电量序列计算均值 μ 与标准差 σ,若某点满足 |x − μ| > 3σ,则视为统计异常。第二类是分位数判据(IQR):计算 Q1、Q3,超出 [Q1 − 1.5×IQR, Q3 + 1.5×IQR] 的点视为异常。前者对近似正态的负荷较敏感,后者对偏态分布更稳健,实践中建议两者并用、取并集标记。
以A线3月3日14:00的 980 kWh 为例:该产线近30天同时段均值约 120 kWh、标准差约 18 kWh,980 远超 120 + 3×18 = 174,IQR 判据同样判定为异常。此时不要直接删除,而应先标记并回查原因——本例经核对为电表通信故障导致的"跳变累积值",属于无效记录,应置为空值进入缺失值处理流程;若核实为真实的生产高峰(如临时加班),则应保留并备注。这一"标记—复核—定性"的顺序,是避免误删真实负荷波动的关键。
三、缺失值处理:按缺口长度分级
缺失值处理的核心不是"补得越多越好",而是"补得合理、补得可追溯"。建议按缺口长度分级:
- 短缺口(≤ 4 个连续点,约1小时):采用线性插值。例如B线3月5日10:00–11:30缺失,前后有效点为 10:00 的 105 kWh 与 11:45 的 117 kWh,按时间比例线性填充中间各点;
- 中缺口(4–16 个点):优先用"同类型日同时段均值"填充,例如用前一周同星期几同时段的均值;
- 长缺口(> 16 个点,超过4小时):不做数值填充,保留为空并打上"数据不可用"标签,在后续基线建模时整段剔除,避免引入虚假规律。
无论采用哪种方式,都应在数据表中增加"填充标记"字段(如 is_filled 与 fill_method),使每一个被填补的值都可追溯,这对后续基线审核与审计非常重要。
四、时间对齐:消除时钟偏移与重采样
C线电表时钟快 8 分钟,意味着其记录的"10:00"实际对应标准时间 09:52。处理方法是:先确定偏移量 Δ = +8 min,将该表所有时间戳整体减去 8 分钟,再统一重采样到整 15 分钟刻度(00、15、30、45 分)。重采样时,若原始点落在两个刻度之间,按时间加权分摊到相邻刻度,保证每个 15 分钟区间的电量之和与原始总量一致,避免"对齐后总量漂移"。
五、单位统一与一致性校验
日报表中出现的"万度"记录,统一乘以 10000 折算为 kWh,并在数据字典中明确记录"原始单位—换算系数—目标单位"三元组。完成全部处理后,做一次一致性校验:将清洗后的15分钟数据按日汇总,与日报表日合计比对,偏差应控制在 2% 以内;若某日偏差超限,回查该日是否存在未处理的异常或长缺口。本例中3月5日因B线长缺口被标记剔除,日合计偏差约 1.6%,在允许范围内,校验通过。
六、交付:可用数据集的结构
最终输出的可用数据集建议包含以下字段,既保留清洗结果,也保留处理痕迹:
| 字段 | 含义 | 示例值 |
|---|---|---|
| timestamp | 对齐后的标准时间(15min刻度) | 2024-03-05 10:00 |
| line_id | 产线标识 | A / B / C |
| energy_kwh | 该区间有功电量(kWh) | 105.0 |
| is_outlier | 是否被标记为异常 | 0 / 1 |
| is_filled | 是否为填充值 | 0 / 1 |
| fill_method | 填充方法 | linear / same_day_avg / none |
| data_status | 数据可用状态 | valid / unavailable |
经过上述五步处理,原始数据中 980 kWh 的跳变被标记并置空、B线短缺口完成线性插值、C线时钟偏移被校正、万度记录完成折算,最终得到一份时间戳统一、单位统一、异常与缺口均有明确标记的可用数据集。这份数据集才是后续能耗基线建模与能效指标计算的可靠输入——清洗阶段留下的每一个标记,都是基线可信度的"证据链"。