3、探索性数据分析(EDA):统计描述、相关性热力图、风速-功率散点图绘制
拿到风机运行数据之后,别急着建模。我个人的习惯是,先做一轮探索性数据分析,也就是EDA。这一步说白了,就是跟数据“混个脸熟”。你得知道数据长什么样,有没有脏数据,变量之间有没有关联。跳过这一步直接上模型,十有八九要翻车。
3.1 统计描述:先给数据“体检”
统计描述是EDA的第一步。我会用df.describe()快速看一眼数据的集中趋势和离散程度。重点关注几个指标:均值、标准差、最小值、最大值、四分位数。
import pandas as pd
# 读取数据
df = pd.read_csv('wind_turbine_data.csv')
# 快速统计描述
desc = df.describe()
print(desc)
输出结果大概长这样:
| 指标 | 风速 (m/s) | 有功功率 (kW) | 桨距角 (°) |
|---|---|---|---|
| count | 100000 | 100000 | 100000 |
| mean | 8.5 | 1500 | 5.2 |
| std | 3.2 | 800 | 8.1 |
| min | 0.0 | -50 | 0.0 |
| 25% | 6.0 | 800 | 0.0 |
| 50% | 8.0 | 1400 | 0.5 |
| 75% | 10.5 | 2100 | 8.3 |
| max | 25.0 | 2300 | 90.0 |
关键发现:
- 有功功率最小值是-50kW,这明显不合理。功率不可能是负的,除非风机在吸收电网功率。这通常是传感器故障或通讯异常导致的。
- 桨距角最大值90°,但正常运行时桨距角很少超过30°。90°说明风机可能处于停机或紧急变桨状态。
我曾经在某个风场遇到过类似情况:功率出现负值,一开始以为是数据采集问题,后来排查发现是功率模块的接线松了。所以看到异常值,别急着删,先搞清楚原因。
3.2 相关性热力图:变量之间的“亲疏关系”
统计描述看完了,接下来我会画一张相关性热力图。这玩意儿能直观地告诉你,哪些变量之间关系紧密,哪些变量是“八竿子打不着”的。
import seaborn as sns
import matplotlib.pyplot as plt
# 计算相关系数矩阵
corr_matrix = df.corr()
# 绘制热力图
plt.figure(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('风机运行参数相关性热力图')
plt.show()
你想想看,风速和功率的相关系数通常很高,一般在0.8以上。但桨距角和功率的关系就复杂了——在低风速段,桨距角基本不变,相关性很弱;在高风速段,桨距角开始调节,相关性会变强。
我的经验:相关系数绝对值大于0.7的,可以认为是强相关。但要注意,相关性不等于因果性。比如风速和发电机转速高度相关,但你不能说风速导致了转速变化——实际上,风速驱动风轮旋转,风轮带动发电机,这才是因果关系。
3.3 风速-功率散点图:风机的“身份证”
风速-功率散点图,说白了就是风机的“身份证”。每台风机都有自己的特性曲线,散点图能帮你一眼看出这台风机是否健康。
plt.figure(figsize=(10, 6))
plt.scatter(df['风速'], df['有功功率'], alpha=0.3, s=1)
plt.xlabel('风速 (m/s)')
plt.ylabel('有功功率 (kW)')
plt.title('风速-功率散点图')
plt.grid(True, alpha=0.3)
plt.show()
正常的散点图应该呈现一个“S”形:
- 切入风速以下:功率为0,风机不发电。
- 切入风速到额定风速之间:功率随风速增加而增加,近似三次方关系。
- 额定风速以上:功率稳定在额定值附近,不再增加。
- 切出风速以上:风机停机,功率降为0。
异常模式识别:
- 功率偏低:散点整体下移,说明风机发电效率下降。可能是叶片结冰、变桨系统故障、或者电网限功率。
- 功率波动大:散点分布很散,不成带状。可能是湍流强度大,或者控制系统不稳定。
- 功率上限异常:额定功率点出现多个“台阶”。可能是变流器限功率,或者机组进入了降容运行模式。
避坑指南:我曾经在分析一个风场的数据时,发现散点图在额定风速附近出现了明显的“断层”。一开始以为是数据质量问题,后来排查发现是变桨系统的响应滞后导致的。所以,散点图上的异常,往往对应着实际的机械或电气故障。
3.4 知识体系总览
下面这张图,是我自己总结的EDA核心逻辑。你可以把它当成一个检查清单,每次做EDA时对照着来。
嗯,到这里,EDA的三个核心步骤就讲完了。统计描述帮你发现数据中的异常值,相关性热力图帮你理清变量之间的关系,风速-功率散点图则直接反映了风机的运行状态。这三步走完,你对数据的理解就已经很深入了。
我的习惯:每次做完EDA,我都会把发现的问题记录下来,形成一个“数据质量报告”。这份报告会跟着项目走,后续建模时遇到问题,回头翻翻报告,往往能找到线索。