第二章 数据采集与预处理:SCADA系统介绍、数据采集频率与质量、异常值检测与处理、数据清洗实战
各位同学,欢迎来到实战环节。上一章我们聊了功率曲线的基本概念,今天要讲的,是建模前最磨人、也最关键的一步——数据预处理。
说实话,在风电行业摸爬滚打这些年,我见过太多模型“翻车”的案例。十有八九,问题都出在数据上。你想想看,垃圾数据进去,再牛的算法也白搭。所以这一章,咱们把SCADA数据这点事儿彻底捋清楚。
核心观点:数据预处理占整个建模工作量的60%以上。别嫌烦,这一步省下的功夫,后面都会加倍还给你。
2.1 SCADA系统:风机的“黑匣子”
SCADA,全称是数据采集与监视控制系统。说白了,它就是风机的“黑匣子”,每时每刻都在记录风机的各种状态。
我个人习惯把SCADA数据分成三类:
- 环境参数:风速、风向、温度、气压、空气密度。这些是“老天爷”给的。
- 运行参数:有功功率、发电机转速、桨距角、机舱振动。这些是风机自己的“身体指标”。
- 状态参数:运行状态(发电/待机/故障)、累计发电量、运行时长。这些是“履历表”。
嗯,这里要注意,不同厂家的SCADA系统,字段命名可能天差地别。我遇到过一家风场,他们把“风速”叫“WS”,另一家叫“WindSpeed”,还有叫“WSPD”的。所以拿到数据第一件事,先搞清楚每个字段到底代表什么。
2.2 数据采集频率与质量
SCADA数据的采集频率,通常有几种:
| 频率类型 | 典型间隔 | 适用场景 |
|---|---|---|
| 秒级 | 1秒 ~ 10秒 | 故障诊断、振动分析 |
| 分钟级 | 1分钟 ~ 10分钟 | 功率曲线建模、性能评估 |
| 小时级 | 1小时 | 电量统计、长期趋势分析 |
做功率曲线建模,我个人推荐用10分钟平均数据。为什么?因为IEC标准就是这么规定的。而且10分钟的数据,既能平滑掉湍流的随机波动,又能保留风速-功率的真实关系。
小技巧:如果原始数据是秒级的,别直接平均。先做一下“中位数滤波”,把那些离谱的跳点滤掉,再算10分钟均值。我试过,效果比直接平均好不少。
数据质量方面,有几个硬指标:
- 完整率:一年数据,缺失不能超过10%。
- 有效数据率:剔除停机、限电、故障时段后,剩余数据占比。
- 异常点率:明显偏离物理规律的点,比如风速0m/s但功率500kW,这种必须处理。
2.3 异常值检测:揪出“捣乱分子”
异常值检测,说白了就是找出那些“不听话”的数据点。我总结了几种常见套路:
2.3.1 物理限值法
这是最直接的方法。风速不可能超过切出风速(通常25m/s),功率不可能超过额定功率。超出这些物理边界的,直接干掉。
# 物理限值过滤示例
valid_data = data[
(data['wind_speed'] >= 0) &
(data['wind_speed'] <= 25) &
(data['active_power'] >= 0) &
(data['active_power'] <= 2000) # 假设额定功率2000kW
]
2.3.2 统计方法:3σ原则
对于功率曲线建模,我常用的是“分箱3σ法”。先把风速分成0.5m/s一个的箱子,在每个箱子内计算功率的均值和标准差。超出均值±3倍标准差的数据,视为异常。
注意:千万别对整个数据集直接算3σ!风速低的时候功率波动本来就大,风速高的时候波动小。混在一起算,会误杀很多正常数据。
2.3.3 局部异常因子(LOF)
这个方法更高级一点。它看的是每个点周围邻居的“密度”。如果一个点周围的点很稀疏,那它大概率是异常点。我在处理一些“幽灵数据”时用过,效果不错。
2.4 数据清洗实战:从原始数据到干净数据
好了,理论讲完了,咱们来点实际的。下面是我自己总结的一套清洗流程:
- 第一步:加载数据,检查字段。看看有没有空值、有没有类型错误。
- 第二步:时间戳对齐。确保所有数据的时间轴是连续的,缺失的时间点要插值或标记。
- 第三步:物理限值过滤。把明显不合理的数据剔除。
- 第四步:停机数据剔除。根据状态码,把停机、待机、故障时段的数据去掉。
- 第五步:分箱异常检测。用分箱3σ法或LOF,剔除异常点。
- 第六步:人工复核。画个散点图,肉眼扫一遍。这一步别省,机器不是万能的。
我曾经接手过一个项目,数据清洗前有100万条记录,清洗完只剩60万条。业主一开始觉得我删太多了,结果我用清洗后的数据建模,模型精度提升了15%。从那以后,他们再也没质疑过我的清洗流程。
避坑指南:我曾经犯过一个错误——把“限电”时段的数据也当成正常数据用了。结果模型在低风速段表现很好,高风速段却严重偏小。后来才发现,限电时风机被人为降功率了。所以,一定要拿到风场的“限电日志”,把限电时段的数据单独标记或剔除。
2.5 知识体系总览
下面这张图,是我自己画的。它把本章的核心逻辑串起来了。你可以把它当成一个“检查清单”,做数据预处理时,对着它一步步来,基本不会出错。
这张图从SCADA系统出发,一路走到数据清洗的最终输出。每一步都有对应的技术方法和注意事项。你把它保存下来,做项目时对照着看,能省不少事。
我的习惯:每次做完数据清洗,我都会把清洗前后的数据分布画在一起对比一下。如果清洗后的数据分布形状发生了剧烈变化,那就要警惕了——可能误删了正常数据。
好了,这一章的内容就到这儿。数据预处理是门手艺活,得多练。下一章咱们开始正式建模,到时候你会感谢今天认真清洗数据的自己。
公众号:蓝海资料掘金营,微信deep3321