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

2.1 数据收集

数据来源包括行业研究机构报告(如中国汽车工业协会、EVTank 等发布的数据)、新能源汽车企业官网、汽车销售平台数据以及政府部门的相关统计数据。

# 从中国汽车工业协会网站抓取新能源汽车销量数据(假设网站结构可通过以下方式获取,实际可能需调整)
url = 'https://www.caam.org.cn/statistics/new_energy_vehicle_sales'
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'
}
# 发送HTTP请求获取网页内容
response = requests.get(url, headers = headers)
# 使用BeautifulSoup解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')

# 假设销量数据在一个表格中,定位到该表格
table = soup.find('table', class_='sales_table')
sales_data = []
# 遍历表格中的每一行(跳过表头)
for row in table.find_all('tr')[1:]:
    cols = row.find_all('td')
    year = cols[0].text.strip()  # 获取年份
    sales_volume = float(cols[1].text.strip().replace('万辆', ''))  # 获取销量,转换为数值类型
    sales_data.append({'Year': year, 'Sales_Volume': sales_volume})
# 将数据整理成DataFrame格式
sales_df = pd.DataFrame(sales_data)

# 从某新能源汽车企业官网获取车型参数数据(假设以JSON格式返回,需根据实际情况调整)
car_url = 'https://www.exampleevcompany.com/api/car_parameters'
# 发送请求获取车型参数数据
car_response = requests.get(car_url)
if car_response.status_code == 200:
    car_params = car_response.json()
    car_params_df = pd.DataFrame(car_params)
else:
    print('Failed to get car parameters data')

2.2 数据探索性分析

# 查看新能源汽车销量数据的基本信息,如数据类型、是否有缺失值等
print(sales_df.info())
# 查看车型参数数据的基本信息
print(car_params_df.info())

# 绘制新能源汽车销量随时间变化的折线图
sales_df['Year'] = pd.to_numeric(sales_df['Year'])  # 将年份列转换为数值类型,方便绘图
plt.figure(figsize=(12, 6))
sns.lineplot(x='Year', y='Sales_Volume', data=sales_df)
plt.title('Trend of New Energy Vehicle Sales Volume')
plt.xlabel('Year')
plt.ylabel('Sales Volume (10,000 units)')
plt.show()

# 查看不同车型的续航里程分布情况
plt.figure(figsize=(10, 6))
sns.boxplot(x='Model', y='Range', data=car_params_df)  # 假设车型为Model列,续航里程为Range列
plt.title('Distribution of Driving Range for Different New Energy Vehicle Models')
plt.xlabel('Vehicle Model')
plt.ylabel('Driving Range (km)')
plt.xticks(rotation=45)
plt.show()

2.3 数据清洗

# 新能源汽车销量数据清洗
# 检查并处理缺失值,这里简单地删除包含缺失值的行
sales_df = sales_df.dropna()
# 去除重复记录
sales_df = sales_df.drop_duplicates()

# 车型参数数据清洗
# 处理异常续航里程数据,如续航里程为负数或过高的不合理值
car_params_df = car_params_df[(car_params_df['Range'] > 0) & (car_params_df['Range'] < 1000)]
# 处理缺失值,对于某些重要参数缺失的数据可考虑删除,对于非关键参数可采用填充的方式
car_params_df = car_params_df.dropna(subset=['Battery_Capacity'])  # 假设电池容量为重要参数,删除其缺失的行

2.4 数据分析

猜你喜欢

转载自blog.csdn.net/daqsdfas/article/details/146547375
今日推荐