第二章 数据采集与预处理: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 数据清洗实战:从原始数据到干净数据

好了,理论讲完了,咱们来点实际的。下面是我自己总结的一套清洗流程:

  1. 第一步:加载数据,检查字段。看看有没有空值、有没有类型错误。
  2. 第二步:时间戳对齐。确保所有数据的时间轴是连续的,缺失的时间点要插值或标记。
  3. 第三步:物理限值过滤。把明显不合理的数据剔除。
  4. 第四步:停机数据剔除。根据状态码,把停机、待机、故障时段的数据去掉。
  5. 第五步:分箱异常检测。用分箱3σ法或LOF,剔除异常点。
  6. 第六步:人工复核。画个散点图,肉眼扫一遍。这一步别省,机器不是万能的。

我曾经接手过一个项目,数据清洗前有100万条记录,清洗完只剩60万条。业主一开始觉得我删太多了,结果我用清洗后的数据建模,模型精度提升了15%。从那以后,他们再也没质疑过我的清洗流程。

避坑指南:我曾经犯过一个错误——把“限电”时段的数据也当成正常数据用了。结果模型在低风速段表现很好,高风速段却严重偏小。后来才发现,限电时风机被人为降功率了。所以,一定要拿到风场的“限电日志”,把限电时段的数据单独标记或剔除。

2.5 知识体系总览

下面这张图,是我自己画的。它把本章的核心逻辑串起来了。你可以把它当成一个“检查清单”,做数据预处理时,对着它一步步来,基本不会出错。

数据采集与预处理知识体系 SCADA系统 采集频率:秒级 / 分钟级 / 小时级 数据质量:完整率 / 有效数据率 / 异常点率 异常检测:物理限值法 / 分箱3σ法 / 局部异常因子(LOF) 数据清洗:加载→对齐→过滤→剔除→检测→复核

这张图从SCADA系统出发,一路走到数据清洗的最终输出。每一步都有对应的技术方法和注意事项。你把它保存下来,做项目时对照着看,能省不少事。

我的习惯:每次做完数据清洗,我都会把清洗前后的数据分布画在一起对比一下。如果清洗后的数据分布形状发生了剧烈变化,那就要警惕了——可能误删了正常数据。

好了,这一章的内容就到这儿。数据预处理是门手艺活,得多练。下一章咱们开始正式建模,到时候你会感谢今天认真清洗数据的自己。


公众号:蓝海资料掘金营,微信deep3321