和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】
文章目录
一、前言
本周的挑战内容为:特斯拉充电桩分布分析
大家可以去关于特斯拉超级充电站数据集(全球)的探索在线或者下载到本地进行运行这个项目。
数据集来源本次活动提供:
二、数据读取和初步探索
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px # 交互式可视化
import folium # 地图可视化
data = pd.read_csv("Supercharge Locations.csv")
data.head()
data.describe() # 查看数据的基本统计信息
data.isnull().sum() # 查看数据是否有缺失值
Supercharger 0
Street Address 0
City 0
State 123
Zip 1928
Country 0
Stalls 0
kW 6
GPS 0
Elev(m) 2
Open Date 781
dtype: int64
三、数据探索及可视化
1、获取拥有最多充电站的 10 个国家
#隐藏警告
import warnings
warnings.filterwarnings("ignore") #忽略警告信息
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.rcParams['figure.dpi'] = 100 #分辨率
top_10_countries = data['Country'].value_counts().head(10)
# 创建条形图
plt.figure(figsize=(10, 6))
sns.barplot(x=top_10_countries.index, y=top_10_countries.values)
plt.xlabel('国家')
plt.ylabel('充电站的数量')
plt.title('拥有最多充电站的 10 个国家')
plt.xticks(rotation=45)
plt.show()
我们不难发现美国共有超过1100座特斯拉充电站,是世界上特斯拉充电站最多的国家。此外,荷兰、德国、中国等国家的充电站数量也比较多。
2、一年中各月新开业数量的变化
# 将开放日期列转换为日期时间格式
data['Open Date'] = pd.to_datetime(data['Open Date'])
# 提取年份和月份作为新的列
data['Year'] = data['Open Date'].dt.year
data['Month'] = data['Open Date'].dt.month
# 计算每个月的新开业数量
monthly_openings = data.groupby(['Year', 'Month']).size().reset_index(name='Count')
# 创建折线图
plt.figure(figsize=(10, 6))
sns.lineplot(data=monthly_openings, x='Month', y='Count', hue='Year', marker='o')
plt.xlabel('月份')
plt.ylabel('新开业数量')
plt.title('一年中各月新开业数量的变化')
plt.legend(title='月份', loc='upper left')
plt.xticks(range(1, 13))
plt.show()
根据图像我们可以发现新开业数量呈现出了明显的季节性变化,每年四月、六月和十月都有比较多的新开业数量,而一月、七月和十一月则有比较少的新开业数量。
3、中国各省的充电桩数量分布
china_data = data[data['Country'] == 'China']
# 按省份统计充电桩数量
province_counts = china_data['State'].value_counts()
# 创建条形图
plt.figure(figsize=(10, 6))
province_counts.plot(kind='bar')
plt.xlabel('省份')
plt.ylabel('充电桩数量')
plt.title('中国各省的充电桩数量分布')
# 显示图表
plt.show()
根据图像我们可以发现在中国,广东、上海和北京的充电桩数量排名前三,其它各省的充电桩数量都比较分散。
4、全球特斯拉超级充电站分布图
# 从GPS列中提取经度和纬度
data[['Latitude', 'Longitude']] = data['GPS'].str.extract(r'([-\d\.]+), ([-\d\.]+)').astype(float)
# 创建地理散点图
fig = px.scatter_geo(data,
lat="Latitude",
lon="Longitude",
hover_name="Supercharger",
text="Stalls",
color="Country",
projection="natural earth")
# 更新布局和标题
fig.update_layout(title="全球特斯拉超级充电站分布图")
# 显示图表
fig.show()
根据图像我们可以发现全球特斯拉充电站分布比较集中,美国、欧洲、中国和澳大利亚都有较为密集的充电站分布,其它地区的充电站数量相对较少。