目录
一、案例背景
随着全球新能源汽车产业的蓬勃发展,新能源汽车电池回收行业应运而生,成为实现资源循环利用与环境保护的关键领域。新能源汽车电池,如锂离子电池,含有锂、钴、镍等多种有价金属,若未经妥善回收处理,不仅会造成资源浪费,还可能因重金属污染对环境产生严重危害。然而,当前电池回收行业面临着诸多挑战,包括回收渠道不健全、回收技术有待提升、成本控制难度大以及行业标准和监管政策不完善等。借助 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 数据收集
数据来源丰富多样,涵盖行业研究机构(如高工锂电、EVTank)的报告、电池回收企业运营数据、新能源汽车生产厂商的电池使用数据以及政府环保与工业部门的统计数据。
# 从高工锂电网站抓取全球新能源汽车电池回收市场规模数据
url = 'https://www.gg-lb.com/report/ev_battery_recycling_market.html'
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')
market_size_data = []
table = soup.find('table', class_='market - size - table')
rows = table.find_all('tr')
for row in rows[1:]:
cols = row.find_all('td')
year = cols[0].text.strip()
market_size = float(cols[1].text.strip().replace('亿元', ''))
market_size_data.append({'Year': year, 'Market_Size': market_size})
market_size_df = pd.DataFrame(market_size_data)
# 从某电池回收企业获取其不同回收技术下的金属回收率数据(假设通过数据合作获取CSV文件)
metal_recovery_data = pd.read_csv('metal_recovery_rates.csv')
2.2 数据探索性分析
# 查看全球新能源汽车电池回收市场规模数据基本信息
print(market_size_df.info())
# 查看电池回收企业金属回收率数据基本信息
print(metal_recovery_data.info())
# 分析全球新能源汽车电池回收市场规模随时间变化趋势
market_size_df['Year'] = pd.to_numeric(market_size_df['Year'])
plt.figure(figsize=(12, 6))
sns.lineplot(x='Year', y='Market_Size', data=market_size_df)
plt.title('Trend of Global New Energy Vehicle Battery Recycling Market Size')
plt.xlabel('Year')
plt.ylabel('Market Size (billion yuan)')
plt.show()
# 查看不同回收技术下各类金属回收率分布
plt.figure(figsize=(10, 6))
sns.boxplot(x='Recovery_Technology', y='Metal_Recovery_Rate', hue='Metal_Type', data=metal_recovery_data)
plt.title('Distribution of Metal Recovery Rates under Different Recycling Technologies')
plt.xlabel('Recovery Technology')
plt.ylabel('Metal Recovery Rate (%)')
plt.show()
2.3 数据清洗
# 全球新能源汽车电池回收市场规模数据清洗
# 检查并处理缺失值
market_size_df.dropna(inplace = True)
# 去除重复记录
market_size_df = market_size_df.drop_duplicates()
# 电池回收企业金属回收率数据清洗
# 处理异常金属回收率数据,如回收率超过100%或小于0%
metal_recovery_data = metal_recovery_data[(metal_recovery_data['Metal_Recovery_Rate'] >= 0) & (metal_recovery_data['Metal_Recovery_Rate'] <= 100)]
# 处理缺失值,对于关键信息缺失的记录可考虑删除
metal_recovery_data = metal_recovery_data.dropna(subset=['Recovery_Technology', 'Metal_Type', 'Metal_Recovery_Rate'])