abbey2017 / wind-energy-analytics

Physics-guided data-driven solutions for the wind energy industry
BSD 3-Clause "New" or "Revised" License
22 stars 8 forks source link
artificial-intelligence machine-learning wind-energy wind-energy-analytics wind-turbine

This library helps lower the entry barrier for domain experts in the wind energy industry to leverage advanced analytics and methodologies developed in related scientific research.

Modules are implemented for different routine and non-routine analysis of time series data collected from operating wind turbines. Practicing wind engineers and analysts can build on fundamental modules as part of a larger project development.

Library installation

# Clone github repo
git clone https://github.com/abbey2017/wind-energy-analytics.git

# Pip install library
pip install scada-data-analysis

Current modules

Usage of power curve filter

import pandas as pd

from scada_data_analysis.modules.power_curve_preprocessing import PowerCurveFiltering

# Load turbine scada data
df = pd.read_csv('path\to\data')

# Instantiate power curve filtering class
pc_filter = PowerCurveFiltering(turbine_label='Wind_turbine_name', windspeed_label='Ws_avg',
                                power_label='P_avg', data=df, cut_in_speed=3, bin_interval=0.5,
                                z_coeff=2.5, filter_cycle=5, return_fig=True, image_path='..\images')

# Process raw scada data
normal_df, abnormal_df = pc_filter.process()

Usage of expected power estimator

import pandas as pd

from scada_data_analysis.modules.expected_power import ExpectedPower

# Load turbine scada data
df = pd.read_csv('path\to\data')

# Instantiate expected power estimator
power_model = ExpectedPower(turbine_label='Wind_turbine_name', windspeed_label='Ws_avg',
                            power_label='P_avg', method='binning', kind='linear')

# Fit estimator based on training data
power_model = power_model.fit(train_df)

# Estimate expected power based on operation power curve
pred_df = power_model.predict(test_df)