3. 数据预处理:野点剔除、缺测补插、风速风向一致性检验

数据预处理,说白了就是给原始数据“洗澡”。

我见过太多人拿到测风数据就直接往软件里塞,结果算出来的发电量偏差大得离谱。你想想看,如果原始数据里混着野点、缺着测值,那后面的分析再漂亮也是白搭。

这一章,咱们就聊聊怎么把数据洗干净。

3.1 野点剔除:别让异常值毁了你的分析

野点是什么?就是那些明显不合理的数据点。比如风速突然跳到60m/s,或者风向在10分钟内转了180度又转回来。

我个人习惯用“阈值法+变化率法”组合来剔除野点。

核心原则:宁可漏掉一个可疑点,也别误删一个有效数据。

3.1.1 阈值法

先设定一个合理的风速范围。对于陆上风电场,我通常设0~40m/s。超过这个范围的,直接标记为野点。

# Python示例:阈值法剔除野点
import pandas as pd

def remove_outliers_by_threshold(df, col='ws', lower=0, upper=40):
    mask = (df[col] >= lower) & (df[col] <= upper)
    df.loc[~mask, col] = None
    return df

我的经验:有些项目在台风过境时风速会超过40m/s。这时候别急着剔除,先看看是不是真实数据。我曾在福建一个项目里遇到过50m/s的实测值,那是台风“莫兰蒂”过境时的真实记录。

3.1.2 变化率法

风速不会在1秒内从5m/s跳到25m/s。如果相邻两个10分钟平均风速的差值超过某个阈值,那就有问题。

def remove_by_rate(df, col='ws', max_rate=5):
    diff = df[col].diff().abs()
    df.loc[diff > max_rate, col] = None
    return df

注意:变化率阈值要根据采样间隔来调整。10分钟数据用5m/s,1分钟数据用2m/s。别搞混了。

3.2 缺测补插:别让数据断档

数据缺测是家常便饭。传感器故障、通讯中断、维护停机……原因多了去了。

缺测率低于10%的,可以补插。超过20%的,我建议直接放弃这个测风塔的数据。

3.2.1 线性插值

最简单的方法,适合短时间缺测(比如1~2个小时)。

df['ws'] = df['ws'].interpolate(method='linear')

3.2.2 相邻塔相关法

如果场内有多个测风塔,可以用相邻塔的数据做线性回归来补插。这个方法比单纯线性插值靠谱得多。

# 用塔A的数据补插塔B的缺测
from sklearn.linear_model import LinearRegression

# 取两塔同时段有效数据训练模型
model = LinearRegression()
model.fit(df_a[['ws']].dropna(), df_b[['ws']].dropna())

# 预测缺测值
df_b.loc[mask_null, 'ws'] = model.predict(df_a.loc[mask_null, ['ws']])

避坑指南:我曾经用相邻塔补插时,没注意两塔高度不同。结果补出来的风速偏低,因为塔A在80m,塔B在100m。后来我先把塔A的数据用风切变推到100m高度,再去做回归。嗯,这个细节很重要。

3.3 风速风向一致性检验

这一步很多人会忽略,但我觉得它比野点剔除还重要。

一致性检验,说白了就是看看不同测风塔、不同高度的数据是不是“合拍”。

3.3.1 风速一致性

同一风场,不同测风塔的风速应该有一定的相关性。如果两个塔相距不到2公里,风速相关系数低于0.8,那肯定有问题。

corr = df_tower1['ws'].corr(df_tower2['ws'])
if corr < 0.8:
    print("警告:两塔风速相关性偏低,请检查数据质量")

3.3.2 风向一致性

风向一致性检验更微妙。同一时刻,两个塔的风向差应该在一个合理范围内。如果风向差超过45度,那就要警惕了。

我的判断标准:

  • 相关系数 > 0.9:数据质量优秀
  • 相关系数 0.8~0.9:可以接受
  • 相关系数 < 0.8:需要排查原因

3.3.3 风切变一致性

不同高度的风速应该符合风切变规律。如果80m风速比50m还低,那要么是数据错了,要么是地形太复杂。

# 计算风切变指数
alpha = np.log(ws_80/ws_50) / np.log(80/50)
if alpha < 0 or alpha > 0.5:
    print("风切变指数异常,请检查数据")

注意:风切变指数在复杂地形下可能为负值。我曾在山区项目里遇到过alpha=-0.1的情况,那是真实存在的逆温层现象。别一棍子打死。

3.4 数据预处理流程图

下面这张图是我自己总结的数据预处理流程,你可以照着这个顺序来操作。

数据预处理流程图 原始测风数据 野点剔除(阈值法+变化率法) 缺测补插(线性/相邻塔相关) 风速风向一致性检验(相关性+风切变) 合格数据输出 关键参数 风速阈值:0~40m/s 变化率阈值:5m/s/10min 相关系数阈值:0.8

3.5 数据质量报告

预处理完成后,我习惯出一份数据质量报告。报告里至少包含以下内容:

检查项目 合格标准 我的经验值
数据完整率 > 90% 低于85%的建议重新测风
野点比例 < 2% 超过5%的检查传感器
风速相关系数 > 0.8 低于0.7的排查地形影响
风向一致性 偏差 < 30° 超过45°的检查罗盘

最后说一句:数据预处理没有标准答案。每个项目的地形、气候、设备都不一样。我的经验是:多看图、多对比、多问为什么。数据不会骗人,但处理数据的人可能会犯错。

专注资料整理