目录
一、案例背景
在全球倡导环保与可持续发展的大背景下,电动汽车行业迎来了爆发式增长。消费者环保意识提升、各国政府政策大力扶持以及电池技术不断突破,都推动着电动汽车市场规模迅速扩张。然而,行业发展也面临诸多挑战,如充电基础设施不完善、电池回收处理问题、市场竞争日益激烈等。通过对电动汽车行业相关数据的分析,能够深入了解市场动态、消费者需求偏好以及企业竞争格局,为企业制定精准市场策略、把握行业发展机遇提供有力依据。本案例将运用 Python 对电动汽车行业数据进行全面剖析,挖掘数据背后的商业价值与发展趋势。
二、代码实现
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
2.1 数据收集与导入
从知名汽车行业数据平台(如中国汽车工业协会、EV - Sales 等)收集电动汽车销量、车型参数(续航里程、电池容量、充电时间等)、企业研发投入、政策补贴等数据。同时,利用网络爬虫技术从汽车资讯网站、社交媒体平台获取消费者对电动汽车的评价、关注点等文本数据(注意遵守相关法律法规和平台规则)。假设数据存储在 CSV 文件ev_industry_data.csv
中,进行导入。
data = pd.read_csv('ev_industry_data.csv')
2.2 数据探索性分析
# 查看数据基本信息
print(data.info())
# 查看数据前几行
print(data.head())
# 统计不同品牌电动汽车的销量
brand_sales = data.groupby('brand')['sales'].sum().reset_index()
print(brand_sales)
# 查看续航里程的统计描述
range_stats = data['range'].describe()
print(range_stats)
2.3 数据清洗
# 处理缺失值
# 假设用中位数填充续航里程的缺失值
data['range'].fillna(data['range'].median(), inplace=True)
# 删除销量缺失的记录
data.dropna(subset=['sales'], inplace=True)
# 处理异常值
# 基于销量的四分位数识别异常值并处理
q1 = data['sales'].quantile(0.25)
q3 = data['sales'].quantile(0.75)
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
data = data[(data['sales'] >= lower_bound) & (data['sales'] <= upper_bound)]
# 数据类型转换
# 将上市日期转换为日期时间类型
data['launch_date'] = pd.to_datetime(data['launch_date'])
2.4 数据分析
2.4.1 市场规模与增长趋势
# 按年份统计电动汽车销量
annual_sales = data.groupby(data['launch_date'].dt.year)['sales'].sum().reset_index()
# 绘制折线图
plt.figure(figsize=(10, 6))
sns.lineplot(x='launch_date', y='sales', data=annual_sales)
plt.title('Annual Electric Vehicle Sales')
plt.xlabel('Year')
plt.ylabel('Sales Volume')
plt.show()
2.4.2 消费者需求分析
# 分析续航里程与销量的关系
plt.figure(figsize=(10, 6))
sns.scatterplot(x='range', y='sales', data=data)
plt.title('Relationship between Range and Sales')
plt.xlabel('Range (km)')
plt.ylabel('Sales Volume')
plt.show()
# 分析充电时间与销量的关系
plt.figure(figsize=(10, 6))
sns.scatterplot(x='charging_time', y='sales', data=data)
plt.title('Relationship between Charging Time and Sales')
plt.xlabel('Charging Time (hours)')
plt.ylabel('Sales Volume')
plt.show()
2.4.3 企业竞争格局
# 计算各品牌的市场份额
total_sales = data['sales'].sum()
brand_market_share = brand_sales.copy()
brand_market_share['market_share'] = brand_market_share['sales'] / total_sales * 100
# 绘制饼图
plt.figure(figsize=(10, 10))
plt.pie(brand_marke