3. 测风数据处理:数据完整性检查、异常值剔除、数据插补与长期订正

测风数据,说白了就是风电场项目的「体检报告」。报告不准,后面所有的工作都是白搭。我见过太多项目,前期选址时数据看着挺漂亮,结果一投产,发电量差了一大截。追根溯源,往往是测风数据处理这步没做好。

今天咱们就聊聊,拿到一堆测风数据后,到底该怎么处理。我把它拆成四个步骤:完整性检查、异常值剔除、数据插补、长期订正。每一步都有坑,咱们一个一个说。

测风数据处理四步流程 ① 完整性检查 数据回收率 > 90%? ② 异常值剔除 风速/风向/标准差 ③ 数据插补 相关法 / 比值法 ④ 长期订正 MCP 方法 关键检查点: • 时间戳连续性:检查是否有缺失时段(如连续缺 3 小时以上需标记) • 物理范围检查:风速 0~50 m/s,风向 0~360°,温度 -40~60°C • 趋势突变检查:相邻 10 分钟风速变化超过 10 m/s 视为可疑

3.1 数据完整性检查——先看看数据「全不全」

拿到测风数据的第一件事,不是急着分析,而是先看看数据到底全不全。我个人习惯先算一个指标:数据回收率

数据回收率 = 实际采集数据量 / 理论应采集数据量 × 100%

行业通行标准:月回收率 ≥ 90%,年回收率 ≥ 95%。低于这个数,数据质量就要打问号了。

怎么检查?我一般会做三件事:

  • 时间戳连续性检查——把数据按时间排序,看看有没有「跳日子」的情况。比如 3 月 5 日 10:00 之后直接跳到 3 月 5 日 14:00,中间缺了 4 个小时。这种缺失如果超过连续 3 小时,就得标记出来。
  • 每日数据量统计——理论上 10 分钟一个数据点,一天应该有 144 个。如果某天只有 100 个,那这天就得重点看看。
  • 季节性缺失模式——我在内蒙古一个项目上遇到过,冬天连续 7 天数据全无。后来一查,是测风仪结冰了。这种季节性缺失,后期插补时要特别小心。

小技巧:用 Python 的 pandas 库,一行代码就能检查时间戳连续性:df['timestamp'].diff().dt.total_seconds().value_counts()。看看除了 600 秒(10 分钟)之外,还有没有其他间隔。

3.2 异常值剔除——把「坏数据」揪出来

数据全了,但里面可能混着「假数据」。比如测风仪被鸟撞了、线路被雷劈了、或者传感器老化漂移了。这些异常值如果不剔除,会直接影响后续分析。

我一般分三步走:

3.2.1 物理范围检查

这个最简单,也最基础。风速不可能超过 50 m/s(除非是台风,但测风仪通常扛不住),风向只能是 0~360°,温度一般 -40~60°C。超出这些范围的,直接剔除。

# 物理范围检查示例
import pandas as pd

df = df[(df['ws'] >= 0) & (df['ws'] <= 50)]
df = df[(df['wd'] >= 0) & (df['wd'] <= 360)]
df = df[(df['temp'] >= -40) & (df['temp'] <= 60)]

3.2.2 趋势突变检查

这个坑我踩过。有一次数据看起来都在范围内,但画成曲线一看,10 分钟前风速 3 m/s,10 分钟后突然变成 25 m/s,再过 10 分钟又回到 4 m/s。这明显不合理。自然界风速变化是有惯性的,不可能这么剧烈。

我个人习惯设置一个阈值:相邻 10 分钟风速变化超过 10 m/s,就标记为可疑数据,需要人工复核。

3.2.3 标准差检查

这个很多人会忽略。测风数据除了风速值本身,还会记录风速标准差。如果某时段风速 8 m/s,但标准差接近 0,说明风速几乎不变——这在自然界几乎不可能。反过来,如果标准差特别大,说明风速剧烈波动,也可能是仪器故障。

注意:我曾经在云南一个山地项目上,发现某个月的数据标准差普遍偏小。后来去现场一看,测风仪的轴承卡死了,转不动。所以标准差检查能帮你发现「看起来正常但实际已坏」的仪器。

3.3 数据插补——把「缺的」补回来

剔除异常值之后,数据就出现了空洞。这时候需要插补。但插补不是随便填个数,得有依据。

常用的方法有三种:

方法 适用场景 优点 缺点
相关法(线性回归) 有邻近测风塔数据 精度较高,物理意义明确 需要参考塔数据
比值法 同一测风塔不同高度 简单快速 假设风切变稳定
时间序列法(ARIMA) 短期缺失(几小时) 不需要外部数据 长期插补误差大

我个人最常用的是相关法。找个距离近、地形相似的参考测风塔,建立线性回归关系。但要注意:相关系数 R² 至少要大于 0.7,否则插补出来的数据不可靠。

# 相关法插补示例
from sklearn.linear_model import LinearRegression

# 假设 target 是目标塔数据,ref 是参考塔数据
model = LinearRegression()
model.fit(ref[valid], target[valid])
target[missing] = model.predict(ref[missing])

避坑指南:我曾经用比值法插补,结果发现插补后的数据风切变指数异常。后来一查,是因为那段时间正好是大气稳定度变化剧烈的季节,风切变不稳定。所以插补前,一定要先检查气象条件是否稳定。

3.4 长期订正——把「短期」变成「长期」

测风数据通常只有 1~2 年,但风电场要运行 20 年。所以我们需要把短期数据订正到长期气候背景下。这就是长期订正,也叫 MCP(Measure-Correlate-Predict)。

核心思路很简单:找一个长期气象站(至少 10 年以上数据),建立测风塔和气象站之间的相关关系,然后用这个关系把测风数据「延长」到长期。

常用的 MCP 方法有:

  • 线性回归法——最简单,但要求两站相关性好
  • 方差比法——考虑了风速变异性,比线性回归更稳健
  • Weibull 尺度参数法——适合风能资源评估,直接修正 Weibull 参数

我个人的经验是:不要只用一种方法。至少用两种方法做交叉验证。如果两种方法结果差异超过 5%,说明数据或方法有问题,需要重新审视。

关键点:长期订正不是「万能药」。如果测风塔和气象站距离超过 50 公里,或者地形差异太大(一个在平原,一个在山顶),订正结果可能还不如直接用原始数据。我见过一个项目,硬是把海边气象站的数据订正到内陆山地,结果发电量高估了 15%。

3.5 实战中的几个坑

说了这么多,最后分享几个我踩过的坑:

  1. 不要忽略风向数据——很多人只盯着风速,但风向缺失或错误会导致机位排布完全跑偏。我有个项目,风向数据因为传感器故障偏了 30 度,结果微观选址时把风机排在了下风向。
  2. 插补数据要打标记——插补的数据和实测数据要区分开。后续做发电量计算时,插补数据的权重应该降低。我一般会在数据表里加一列 flag,0 表示实测,1 表示插补。
  3. 长期订正要选对年份——气象站的长期数据里,如果包含极端年份(比如特大台风年),要慎重处理。是包含还是剔除,需要根据项目所在地的气候特点决定。

嗯,测风数据处理这块,说到底就是四个字:认真、细致。每一步都做到位了,后面的工作才能站得住脚。数据不会骗人,但处理数据的人可能会犯错。咱们做这行的,心里得有一杆秤。