Python 数据分析实战:海上风力发电行业发展解析

目录

一、案例背景

二、代码实现

2.1 数据收集

2.2 数据探索性分析

2.3 数据清洗

2.4 数据分析

2.4.1 海上风力发电企业运维成本影响因素分析

2.4.2 海上风力发电场选址因素分析

2.4.3 全球海上风力发电新增装机容量未来预测

三、主要的代码难点解析

3.1 数据收集

3.2 数据清洗 - 海上风力发电企业风电场运维成本数据处理

3.3 数据分析 - 海上风力发电企业运维成本影响因素分析

3.4 数据分析 - 海上风力发电场选址因素分析

3.5 数据可视化

四、可能改进的代码

4.1 数据收集改进

4.2 数据清洗改进

4.3 数据分析改进


一、案例背景

海上风力发电作为可再生能源领域的重要分支,凭借海上风能资源丰富、风速稳定、不占用陆地空间等优势,近年来在全球范围内取得了显著发展。从浅海到深海,海上风电场的规模不断扩大,技术持续创新。然而,该行业在发展进程中也面临着诸多挑战,例如高昂的建设和运维成本、复杂的海洋环境带来的技术难题、政策法规的不确定性以及对海洋生态环境的潜在影响等。通过运用 Python 对海上风力发电行业相关数据进行全面、深入的分析,能够为企业制定科学的投资决策、优化运营策略提供有力支撑,助力政府完善政策体系,推动海上风力发电行业的可持续、高质量发展。

二、代码实现

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import requests
from bs4 import BeautifulSoup
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from statsmodels.tsa.arima.model import ARIMA

2.1 数据收集

数据来源广泛,涵盖行业研究机构(如彭博新能源财经、GWEC 全球风能理事会)发布的报告、海上风力发电企业的运营数据、海洋气象监测部门的气象数据以及政府能源管理部门的统计数据。

# 从彭博新能源财经网站抓取全球海上风力发电新增装机容量数据
url = 'https://www.bnef.com/insights/global - offshore - wind - market - outlook'
headers = {
    'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers = headers)
soup = BeautifulSoup(response.text, 'html.parser')
capacity_data = []
table = soup.find('table', class_='capacity - table')
rows = table.find_all('tr')
for row in rows[1:]:
    cols = row.find_all('td')
    year = cols[0].text.strip()
    new_capacity = float(cols[1].text.strip().replace('MW', ''))
    capacity_data.append({'Year': year, 'New_Capacity': new_capacity})
capacity_df = pd.DataFrame(capacity_data)

# 从某海上风力发电企业获取其风电场运维成本数据(假设通过数据合作获取CSV文件)
maintenance_cost_data = pd.read_csv('offshore_windfarm_maintenance_cost.csv')

2.2 数据探索性分析

# 查看全球海上风力发电新增装机容量数据基本信息
print(capacity_df.info())
# 查看海上风力发电企业风电场运维成本数据基本信息
print(maintenance_cost_data.info())

# 分析全球海上风力发电新增装机容量随时间变化趋势
capacity_df['Year'] = pd.to_numeric(capacity_df['Year'])
plt.figure(figsize=(12, 6))
sns.lineplot(x='Year', y='New_Capacity', data=capacity_df)
plt.title('Trend of Global Offshore Wind Power New Installed Capacity')
plt.xlabel('Year')
plt.ylabel('New Installed Capacity (MW)')
plt.show()

# 查看不同年份海上风力发电企业风电场各类运维成本占比
cost_share_data = maintenance_cost_data.groupby('Year').apply(lambda x: x[['Labor_Cost', 'Equipment_Replacement_Cost', 'Transportation_Cost']].sum() / x[['Labor_Cost', 'Equipment_Replacement_Cost', 'Transportation_Cost']].sum().sum()).reset_index()
cost_share_data = pd.melt(cost_share_data, id_vars='Year', var_name='Cost_Type', value_name='Cost_Share')
plt.figure(figsize=(10, 6))
sns.barplot(x='Year', y='Cost_Share', hue='Cost_Type', data=cost_share_data)
plt.title('Proportion of Various Maintenance Costs of Offshore Wind Farms in Different Years')
plt.xlabel('Year')
plt.ylabel('Cost Share')
plt.show()

2.3 数据清洗

# 全球海上风力发电新增装机容量数据清洗
# 检查并处理缺失值
capacity_df.dropna(inplace = True)
# 去除重复记录
capacity_df = capacity_df.drop_duplicates()

# 海上风力发电企业风电场运维成本数据清洗
# 处理异常运维成本数据,如成本为负数
maintenance_cost_data = maintenance_cost_data[maintenance_cost_data['Total_Maintenance_Cost'] > 0]
# 处理缺失值,对于关键信息缺失的记录可考虑删除
maintenance_cost_data = maintenance_cost_data.dropna(subset=['Yea
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萧十一郎@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值