2、异常数据定义与分类:缺失值、异常值、死值、限功率运行数据、停机数据识别

各位好,我是老张。在风电行业摸爬滚打了十几年,今天咱们聊聊异常数据。说实话,我刚入行那会儿,最头疼的就是数据清洗。你想想看,一个风场几百台机组,每天产生的数据量惊人,但真正能用的有多少?我见过太多团队花大把时间建模,结果因为数据质量太差,模型根本跑不动。

所以这一节,咱们把异常数据掰开揉碎了讲。我会结合自己踩过的坑,告诉你每种异常长什么样,怎么识别。

核心观点:异常数据不是垃圾,它是风机的「病历本」。读懂它,你才能对症下药。

2.1 缺失值

缺失值是最常见的异常。说白了,就是该有数据的地方,它空了。为什么会这样?传感器故障、通讯中断、采集系统死机,原因多了去了。

我个人习惯把缺失值分成两类:

  • 随机缺失:比如某个风速传感器偶尔掉线,过一会儿自己恢复了。这种一般影响不大,插值补上就行。
  • 连续缺失:比如某台机组停机检修,连续几天没有数据。这种就要小心了,不能简单插值,得结合运维日志判断。

我记得有一次,一个项目组用某风场的数据做功率曲线建模,结果模型精度一直上不去。我一看,好家伙,连续缺失的数据段被他们用线性插值填上了,直接把停机时段的风速功率关系搞乱了。嗯,这里要注意:连续缺失超过1小时,建议标记为无效时段,不要强行填充。

我的小技巧:用pandas的isnull()统计缺失率。如果某列缺失超过30%,我建议直接弃用这列数据,或者找运维确认原因。

2.2 异常值

异常值,就是那些明显超出正常范围的数据点。比如风速显示200m/s,功率显示-500kW,这种一看就不对劲。

怎么识别?我一般用两种方法:

  1. 物理限值法:根据风机设计参数设定上下限。比如某机型额定风速12m/s,切出风速25m/s,那超过25m/s的风速数据基本可以判定为异常。
  2. 统计法:用3σ原则或者箱线图。我更喜欢箱线图,因为它对极端值不敏感,更稳健。

给大家看个例子。这是某风场10分钟平均风速的箱线图,红点就是异常值:

# 用Python快速识别异常值
import pandas as pd
import numpy as np

def detect_outliers_iqr(data):
    Q1 = data.quantile(0.25)
    Q3 = data.quantile(0.75)
    IQR = Q3 - Q1
    lower_bound = Q1 - 1.5 * IQR
    upper_bound = Q3 + 1.5 * IQR
    return (data < lower_bound) | (data > upper_bound)

# 假设df是数据框,'ws'是风速列
outliers = detect_outliers_iqr(df['ws'])
print(f"发现 {outliers.sum()} 个异常风速点")

避坑指南:我曾经遇到过一个风场,所有风速数据都在0-5m/s之间,看起来很正常。但后来发现是风速仪结冰了,数据全部偏低。所以,异常值识别不能只看统计分布,还要结合物理机理。

2.3 死值

死值,也叫恒定值。就是数据长时间不变,像死了一样。比如风速一直显示3.5m/s,连续几个小时纹丝不动。这明显不正常,因为自然界风速是不断波动的。

我总结的死值识别标准:

参数 死值判定条件 典型原因
风速 连续6个点(1小时)不变 风速仪卡涩、结冰
功率 连续12个点(2小时)不变 功率传感器故障
桨距角 连续30个点(5小时)不变 变桨系统卡死

你想想看,如果风速死值混进训练数据,模型会学到什么?它会认为「风速不变是正常的」,这可就麻烦了。所以死值必须剔除。

2.4 限功率运行数据

限功率运行,说白了就是电网让风机「少发点」。比如电网调度要求风场出力不超过50%,这时候风机就会主动降功率。

这种数据有什么特征?风速很高,但功率明显低于理论值。比如风速12m/s,按理说应该满发,但实际功率只有额定的一半。

怎么识别?我一般用功率曲线对比法:

  • 计算每个风速bin下的理论功率
  • 如果实际功率低于理论功率的80%,且持续超过30分钟,就标记为限功率运行

重要提醒:限功率数据不能直接删除!它反映了风机的实际运行状态。我建议单独标记,用于分析电网调度对发电量的影响。

2.5 停机数据

停机数据,就是风机不转的时候产生的数据。比如检修、故障、电网断电等。这时候风速可能很高,但功率为0或者负值(自耗电)。

识别方法很简单:

  1. 功率阈值法:功率低于0.5%额定功率,且持续超过10分钟,判定为停机
  2. 状态码法:如果SCADA系统有停机状态码,直接用它

我曾经犯过一个错误:把停机数据当成正常数据训练模型,结果模型学会了「有风速没功率」这种错误关系。后来我学乖了,训练前一定先剔除停机数据。

我的经验:停机数据不要直接扔掉。把它单独存起来,可以用来分析风机的可靠性、故障频率等。说白了,数据没有好坏,关键看你怎么用。

2.6 知识体系总览

最后,我用一张图总结一下这五种异常数据的关系。这张图是我自己画的,希望能帮你建立整体认知:

风电场异常数据分类体系 异常数据 缺失值 异常值 死值 限功率运行 停机数据 随机缺失 连续缺失 物理限值法 统计法(3σ/箱线图) 风速死值 功率死值 桨距角死值 电网调度限功率 功率曲线对比法 功率阈值法 状态码法 识别异常数据的关键: 物理机理 + 统计方法 + 运维经验,三者缺一不可 公众号:蓝海资料掘金营,微信deep3321

好了,这一节的内容就到这里。五种异常数据,每种都有它的脾气。你只要记住:识别异常不是目的,目的是让数据真实反映风机的运行状态。下一节咱们聊聊怎么处理这些异常数据,到时候我会分享更多实战技巧。