目录
一、案例背景
碳捕获与封存(Carbon Capture and Storage,CCS)技术是应对全球气候变化、实现碳中和目标的关键手段之一。它通过捕获工业生产过程中排放的二氧化碳,将其运输并封存于地下深处,从而大幅减少二氧化碳排放到大气中。该技术在能源(如煤炭、天然气发电站)、水泥、钢铁等碳排放密集型行业具有重要应用前景。然而,CCS 行业发展面临众多挑战。技术层面,碳捕获效率提升、运输过程的安全性与成本控制、地下封存的长期稳定性监测等问题亟待解决。经济上,高昂的建设和运营成本使得 CCS 项目投资回报周期长,缺乏市场竞争力。政策方面,相关的激励政策和监管机制尚不完善,影响企业参与积极性。通过 Python 进行深入数据分析,能够助力企业优化 CCS 项目运营,为政策制定者提供决策依据,推动 CCS 行业的规模化发展。
二、代码实现
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.statespace.sarimax import SARIMAX
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
2.1 数据收集
数据来源涵盖国际能源署(IEA)、国际碳捕获与封存协会(Global CCS Institute)等权威机构发布的报告,行业企业公开的项目数据,政府环境与能源部门的统计信息,以及学术研究文献中的实验数据。
python
# 从国际能源署网站抓取全球CCS项目数量及碳封存量数据
url = 'https://www.iea.org/reports/carbon - capture - and - storage - market - report'
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')
project_data = []
table = soup.find('table', class_='ccs - project - table')
rows = table.find_all('tr')
for row in rows[1:]:
cols = row.find_all('td')
year = cols[0].text.strip()
project_count = int(cols[1].text.strip())
carbon_storage = float(cols[2].text.strip().replace('百万吨', ''))
project_data.append({'Year': year, 'Project_Count': project_count, 'Carbon_Storage': carbon_storage})
project_df = pd.DataFrame(project_data)
python
# 从某大型CCS企业获取其项目成本构成数据(假设通过数据合作获取CSV文件)
cost_data = pd.read_csv('ccs_project_costs.csv')
2.2 数据探索性分析
python
# 查看全球CCS项目数据基本信息
print(project_df.info())
# 查看CCS项目成本数据基本信息
print(cost_data.info())
python
# 分析全球CCS项目数量随时间变化趋势
project_df['Year'] = pd.to_numeric(project_df['Year'])
plt.figure(figsize=(12, 6))
sns.lineplot(x='Year', y='Project_Count', data=project_df)
plt.title('Trend of Global CCS Project Quantity over Time')
plt.xlabel('Year')
plt.ylabel('Number of Projects')
plt.show()
python
# 查看CCS项目不同成本项占比
cost_share = cost_data.iloc[0, 1:].sum()
cost_data['Cost_Share'] = cost_data.iloc[0, 1:]/cost_share * 100
plt.figure(figsize=(10, 6))
sns.barplot(x=cost_data.columns[1:], y=cost_data['Cost_Share'])
plt.title('Cost Composition of CCS Projects')
plt.xlabel('Cost Item')
plt.ylabel('Cost Share (%)')
plt.xticks(rotation=45)
plt.show()
2.3 数据清洗
python
# 全球CCS项目数据清洗
# 检查并处理缺失值
project_df.dropna(inplace = True)
# 去除重复记录
project_df = project_df.drop_duplicates()
python
# CCS项目成本数据清洗
# 处理异常成本数据,如成本为负数
cost_data = cost_data[cost_data['Total_Cost