本篇文章分析2023年11月新爬取的数据,并进行Python数据分析部分。(这次数据更新至2023年09月,进行2023年数据与2022年数据分析与对比)所有数据分析结果基于爬虫得到的数据,不分析数据的准确性问题。本次会对2023年9月及以往的销售数据进行复盘分析,主要是对比2022年和2023年数据同比分析。
-
导入必要的库
import numpy as np import pandas as pd import plotly.graph_objects as go import pandas as pd import plotly.express as px import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] import seaborn as sns
-
读取数据
df =pd.read_excel(r"\Users\21399\汽车销量\中国汽车总体销量.xlsx") df.head(5)
-
数据类型查看
df.info()
-
数据预处理
df['年份'] = df['时间'].dt.year df['月份'] = df['时间'].dt.month df["日期"] = df['时间'].dt.to_period('M')
df['年份'] = df['年份'].astype("str") df['月份'] = df['月份'].astype("str") df["日期"] = df['日期'].astype("str")
df.head()
-
数据可视化
df2 = df[df["年份"] >= "2013"]
px.bar(df2, # 上面指定的数据 title="汽车月销售量", template="plotly_white", # 分别主题设置为:plotly、plotly_dark x="日期", # 横坐标 y="销量", # 纵坐标 color="销量") # 颜色取值
-
2023年与2022年同时期汽车销量数据对比
df['年份'] = df['年份'].astype("int") df['月份'] = df['月份'].astype("int") df3 = df[(df["年份"] >= 2022) & (df["月份"] <= 9)] df['月份'] = df['月份'].astype("str") df3
df_2023 = df3[df3["年份"] == 2023]
df_2022 = df3[df3["年份"] == 2022]
#初始化绘图
fig = go.Figure()
fig.add_trace(go.Bar(
x=df_2023["月份"],
y=df_2023["销量"],
name='2023年',
marker_color='rgb(55, 83, 109)'
))
fig.add_trace(go.Bar(
x=df_2022["月份"],
y=df_2022["销量"],
name='2022年',
marker_color='rgb(26, 118, 255)'
))
fig.update_layout(
template="plotly_white",
title='2023年与2022年同时期汽车销量数据对比',
xaxis=dict(
title='月份',
titlefont_size=16,
tickfont_size=14,
),
yaxis=dict(
title='',
titlefont_size=16,
tickfont_size=14,
),
legend=dict(
x=0,
y=1.0,
bgcolor='rgba(255, 255, 255, 0)',
bordercolor='rgba(255, 255, 255, 0)'
),
barmode='group',
bargap=0.15,
bargroupgap=0.1
)
fig.show()
-
各厂商汽车销量(年)
cs =pd.read_excel(r"\Users\21399\汽车销量\中国汽车分厂商每月销售表.xlsx")
cs.head(10)
cs_sales = cs.groupby(['年份',"厂商"])['销量'].sum().reset_index().sort_values(['销量'])
cs_sales.head(10)
cs_sales.tail(10)
2023年(1月-9月) 可以说是比亚迪一家独大的一年,销量为179万
fig = px.bar(cs_sales,x="年份",y="销量",color="厂商",text_auto=",",title="中国各厂商汽车销量(年)")
fig.update_layout(height=1200)
-
各车型汽车销量(年)
cx =pd.read_excel(r"\Users\21399\汽车销量\中国汽车分车型每月销售量.xlsx")
cx.head(10)
cx["最低价"] = cx['售价(万元)'].apply(lambda x:x.split('-')[0])
cx["最低价"] = pd.to_numeric(cx["最低价"], errors='coerce')
cx1 = cx[cx["最低价"] >= 4.5]
cx_sales = cx1.groupby(['年份',"车型"])['销量'].sum().reset_index().sort_values(['销量'])
fig = px.bar(cx_sales,x="年份",y="销量",color="车型",text_auto=",",title="中国各车型汽车销量(年)-最低价大于4.5万")
fig.update_layout(height=1200)