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 数据预处理流程图
下面这张图是我自己总结的数据预处理流程,你可以照着这个顺序来操作。
3.5 数据质量报告
预处理完成后,我习惯出一份数据质量报告。报告里至少包含以下内容:
| 检查项目 | 合格标准 | 我的经验值 |
|---|---|---|
| 数据完整率 | > 90% | 低于85%的建议重新测风 |
| 野点比例 | < 2% | 超过5%的检查传感器 |
| 风速相关系数 | > 0.8 | 低于0.7的排查地形影响 |
| 风向一致性 | 偏差 < 30° | 超过45°的检查罗盘 |
最后说一句:数据预处理没有标准答案。每个项目的地形、气候、设备都不一样。我的经验是:多看图、多对比、多问为什么。数据不会骗人,但处理数据的人可能会犯错。