第1章:Python与数据分析基础
各位风电运维的同行们,大家好。我是老张,在风电行业摸爬滚打了十几年,从最早的现场运维干到现在的AI算法优化。今天咱们开始这门《风电运维决策AI优化系统实战课程》的第一章——Python与数据分析基础。
说实话,我刚开始接触Python那会儿,也觉得这东西跟咱们风机运维八竿子打不着。但后来我发现,风机每天产生的数据量太大了——振动、温度、功率、风速……这些数据里藏着设备健康的秘密。没有Python,你根本处理不过来。
1.1 Python环境搭建——别让工具卡住你
我个人习惯用Anaconda来管理Python环境。为什么?因为风电项目往往需要多个依赖包,Anaconda能帮你隔离环境,避免版本冲突。我在项目里就吃过这个亏——有一次升级了NumPy,结果整个pandas数据读取全崩了,排查了一整天。
推荐安装方案:
- 下载Anaconda(Python 3.9+版本)
- 创建独立环境:
conda create -n wind_turbine python=3.9 - 激活环境:
conda activate wind_turbine - 安装核心库:
conda install pandas numpy matplotlib scikit-learn
我的小技巧: 在项目根目录放一个requirements.txt文件,记录所有依赖包及其版本。这样换电脑或者团队协作时,一行命令就能复现环境:pip install -r requirements.txt
1.2 Pandas数据处理——风电数据的瑞士军刀
Pandas是我在风电项目里用得最多的库。说白了,它就是Python版的Excel,但比Excel强大一百倍。你想想看,一台风机每秒采集一次数据,一天就是86400条记录,一个风场几十台风机,一个月下来数据量轻松上亿条。Excel根本打不开,但Pandas几秒钟就能搞定。
我记得有一次做风机齿轮箱的故障分析,需要把SCADA系统导出的CSV文件、振动监测系统的TXT文件、还有手工记录的Excel表格合并到一起。用Pandas的merge和concat函数,半小时就搞定了数据整合。
核心数据结构:DataFrame
DataFrame你可以理解成一张表格,有行有列。每一列可以存不同类型的数据——风速是浮点数,风机状态是字符串,时间戳是日期格式。
import pandas as pd
# 读取风机SCADA数据
df = pd.read_csv('wind_turbine_data.csv')
# 查看前5行
print(df.head())
# 查看数据基本信息
print(df.info())
# 查看统计摘要
print(df.describe())
常用数据操作
| 操作 | 代码示例 | 说明 |
|---|---|---|
| 选择列 | df['风速'] |
获取单列数据 |
| 过滤行 | df[df['有功功率'] > 1500] |
筛选功率大于1500kW的记录 |
| 分组聚合 | df.groupby('风机编号')['风速'].mean() |
计算每台风机的平均风速 |
| 缺失值处理 | df.dropna() 或 df.fillna(method='ffill') |
删除或填充空值 |
避坑指南: 我曾经在处理某风场数据时,发现功率曲线异常。排查了半天,原来是时间戳列被读成了字符串类型。记住,读取数据后第一件事就是检查数据类型,尤其是时间列:df['时间'] = pd.to_datetime(df['时间'])
1.3 NumPy科学计算——数值运算的引擎
NumPy是Pandas的底层引擎,也是所有科学计算库的基础。它提供了高性能的多维数组对象,以及大量的数学函数。在风电领域,我们经常需要对风速、功率等数据进行数学变换和统计分析,NumPy就是干这个的。
嗯,这里要注意:NumPy的数组运算速度比Python原生的列表快几十倍。为什么?因为它是用C语言实现的,而且支持向量化操作——说白了就是一次处理整个数组,而不是用循环一个个算。
创建数组
import numpy as np
# 从列表创建
wind_speeds = np.array([3.2, 5.1, 7.8, 6.4, 4.9])
# 创建全零数组
zeros = np.zeros(10)
# 创建等间隔数组
time_points = np.linspace(0, 10, 100) # 0到10之间均匀取100个点
常用数学运算
# 风速数据
v = np.array([3, 5, 7, 9, 11])
# 计算风功率(简化公式:P = 0.5 * ρ * A * v³)
rho = 1.225 # 空气密度
A = 80 # 扫风面积
power = 0.5 * rho * A * v**3
# 统计运算
mean_wind = np.mean(v)
std_wind = np.std(v)
max_wind = np.max(v)
核心概念:广播机制
NumPy的广播机制允许不同形状的数组进行运算。比如上面的v**3,就是对数组每个元素求立方,不需要写循环。这在处理大规模风电数据时特别有用——你想想看,几十万条风速数据,一次运算就搞定。
1.4 知识体系总览
下面这张图是我自己总结的Python数据分析知识体系,在风电运维场景下特别实用。你可以把它当成一张地图,知道每个工具在什么位置、解决什么问题。
从这张图你能看出来,Python和数据分析是整个风电运维AI系统的地基。没有这个基础,后面的模型训练、决策优化都是空中楼阁。我个人建议,这一章的内容一定要动手敲代码,光看是学不会的。
实战建议: 找一份真实的风机SCADA数据(网上有公开数据集),用Pandas完成以下操作:
- 读取数据并检查数据质量
- 计算每台风机的日平均发电量
- 找出功率异常的数据点(比如功率为负值或超过额定功率)
- 绘制风速-功率散点图
做完这些,你就基本掌握了数据分析的入门技能。
好了,这一章的内容就到这里。记住,工具是死的,人是活的。Python和数据分析只是手段,最终目的是帮我们更好地理解风机运行状态、做出更优的运维决策。下一章我们会深入讲数据预处理,到时候见。
公众号:蓝海资料掘金营,微信deep3321