【汽车销售数据】2015~2023年各厂商各车型的探索 数据分析可视化

news2024/12/28 5:19:22

数据处理的思路:

1 各表使用情况:

  • 汽车分厂商每月销售表,该表主要分析展示top10销量的厂商销量、占比变化情况(柱形图、饼图);
  • 中国汽车分车型每月销售量表,该表主要分析展示top20销量的车型销量变化情况以及平均售价(散点图,折线图,柱形图);
  • 中国汽车总体销量表,该表主要分析展示整体销量及变化的趋势(折线图、柱形图)

2 模块使用情况

  • 此次数据集相关可视化展示,均使用pyecharts绘制

1 包导入

In [1]:

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar, Pie, Line, Scatter, Timeline, Grid
from pyecharts.options import GridOpts

import warnings
warnings.filterwarnings("ignore")

2 分析中国汽车分厂商每月销售表

In [2]:

df_manufacturer = pd.read_excel('/home/mw/input/car3784/中国汽车分厂商每月销售表.xlsx')
df_manufacturer.head()
年份月份排名厂商LOGO厂商销量占销量份额
0202311https://i.img16888.com/dealer/flogo/57329.gif比亚迪13331710.29%
1202312https://i.img16888.com/dealer/flogo/57379.gif长安汽车900676.95%
2202313https://i.img16888.com/dealer/flogo/57412.gif上汽大众780006.02%
3202314https://i.img16888.com/dealer/flogo/57420.gif一汽-大众700045.41%
4202315https://i.img16888.com/dealer/flogo/57605.gif吉利汽车674795.21%

In [3]:

df_manufacturer.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 11104 entries, 0 to 11103
Data columns (total 7 columns):
年份        11104 non-null int64
月份        11104 non-null int64
排名        11104 non-null int64
厂商LOGO    11104 non-null object
厂商        11099 non-null object
销量        11104 non-null int64
占销量份额     11104 non-null object
dtypes: int64(4), object(3)
memory usage: 607.3+ KB

In [4]:

# 空值直接删除
df_manufacturer = df_manufacturer.dropna()

In [5]:

# 先组合一个date日期字段,便于后续的可视化
df_manufacturer['日期'] = df_manufacturer['年份'].astype(str) + '-' + df_manufacturer['月份'].astype(str)

In [6]:

df_manufacturer_top10 = df_manufacturer[df_manufacturer['排名']<11]
df_manufacturer_top10 = df_manufacturer_top10.sort_values(by=['日期','排名'])

In [7]:

df_manufacturer_top10['占销量份额'] = df_manufacturer_top10['占销量份额'].apply(lambda x:x[:-1]).astype('float')

In [8]:

# 数据分别获取
dates = df_manufacturer_top10['日期'].unique().tolist()
groups = {date:[] for date in dates}
sales = {date:[] for date in dates}
percentage = {date:[] for date in dates}
for d in dates:
    date = d
    sales[date] = df_manufacturer_top10[df_manufacturer_top10['日期']==d]['销量'].tolist()
    groups[date] = df_manufacturer_top10[df_manufacturer_top10['日期']==d]['厂商'].tolist()
    percentage[date] = df_manufacturer_top10[df_manufacturer_top10['日期']==d]['占销量份额'].tolist()

In [9]:

def create_bar(i):
    bar = Bar()
    bar.add_xaxis(groups[dates[i]])
    bar.add_yaxis("",sales[dates[i]])
    bar.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title="每月top10厂商销量"),
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)),
        )
    return bar

In [10]:

def create_pie(i):
    pie = Pie()
    pie.add("", [list(z) for z in zip(groups[dates[i]], percentage[dates[i]])])
    pie.set_global_opts(
            title_opts=opts.TitleOpts(title="每月top10厂商销量占比"),
            legend_opts=opts.LegendOpts(orient="vertical", pos_bottom="5%", pos_left="left")
    )
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}%"))
    return pie

In [11]:

timeline = Timeline()
timeline.add_schema(
    orient="vertical",
    is_auto_play=True,  # 设置自动播放
    play_interval=1000,  # 播放间隔(毫秒)
    is_loop_play=True,  # 是否循环播放
    pos_right="2%",
    width="70",
    height="500",
    label_opts=opts.LabelOpts(is_show=True,position='left')
)
for i in range(len(dates)):
    bar = create_bar(i)
    timeline.add(bar, dates[i])

timeline.render_notebook()

  • 上述x轴没变,不知道为啥,而且用组合图饼图会无法显示出错,这里分开展示。

In [12]:

timeline = Timeline()
timeline.add_schema(
    orient="vertical",
    is_auto_play=True,  # 设置自动播放
    play_interval=1000,  # 播放间隔(毫秒)
    is_loop_play=True,  # 是否循环播放
    pos_right="2%",
    width="70",
    height="500",
    label_opts=opts.LabelOpts(is_show=True,position='left')
)
for i in range(len(dates)):
    pie = create_pie(i)
    timeline.add(pie, dates[i])

timeline.render_notebook()

3 分析中国汽车分车型每月销售量表

In [13]:

df = pd.read_excel('/home/mw/input/car3784/中国汽车分车型每月销售量.xlsx')

In [14]:

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 49344 entries, 0 to 49343
Data columns (total 7 columns):
年份        49344 non-null int64
月份        49344 non-null int64
排名        49344 non-null int64
车型        49318 non-null object
厂商        49318 non-null object
销量        49344 non-null int64
售价(万元)    49344 non-null object
dtypes: int64(4), object(3)
memory usage: 2.6+ MB

In [15]:

# 空值直接删除
df = df.dropna()

In [16]:

# 先组合一个date日期字段,便于后续的可视化
df['日期'] = df['年份'].astype(str) + '-' + df['月份'].astype(str)

In [17]:

# 售价拆分
df['售价max'] = df['售价(万元)'].apply(lambda x: float(x.split('-')[1]))
df['售价min'] = df['售价(万元)'].apply(lambda x: float(x.split('-')[0]))
df['均价'] = (df['售价max']+df['售价min'])/2

In [34]:

# 先看下整体销量车型的排列,top20
df_mode_sales = df.groupby('车型').agg({'销量':'sum','售价max':'mean','售价min':'mean','均价':'mean'}
                        )[['销量','售价max','售价min','均价']].sort_values('销量',ascending=False).reset_index()
df_mode_sales.head()
车型销量售价max售价min均价
0RAV4荣放403266726.3817.5821.980
1轩逸375278717.499.9813.735
2朗逸373455815.199.4012.295
3哈弗H6348728215.709.8912.795
4五菱宏光34463165.994.605.295

In [19]:

bar = Bar()
bar.add_xaxis(df_mode_sales['车型'].tolist()[:20])
bar.add_yaxis("",df_mode_sales['销量'].tolist()[:20])
bar.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
bar.set_global_opts(
    title_opts=opts.TitleOpts(title="各车型累计销量"),
    xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)),
    )
bar.render_notebook()

In [39]:

# 上述有售价为不公布的,我们也直接删掉
df_mode_sales = df_mode_sales[df_mode_sales['均价']>0]

In [41]:

x_data = df_mode_sales['销量'].tolist()
y_data = df_mode_sales['均价'].tolist()
names = df_mode_sales['车型'].tolist()

In [43]:

scatter = Scatter()
scatter.add_xaxis(x_data)
scatter.add_yaxis("销量与均价", 
                y_data,
                label_opts=opts.LabelOpts(is_show=False),
                symbol_size=8)
scatter.set_global_opts(
    xaxis_opts=opts.AxisOpts(name="销量"),
    yaxis_opts=opts.AxisOpts(name="均价")
)
scatter.render_notebook()

  • 国内车型的 均价级基本处于30w以下,部分车型虽然价格较高,但是销量却不低。

In [67]:

line = Line()
line.add_xaxis(names[:20])
line.add_yaxis("均价", y_data[:20], label_opts=opts.LabelOpts(is_show=False))
line.set_global_opts(
        xaxis_opts = opts.AxisOpts(is_show=False),
        yaxis_opts=opts.AxisOpts(name="均价"),
        legend_opts=opts.LegendOpts(pos_left="40%")
    )

bar = Bar()
bar.add_xaxis(names[:20])
bar.add_yaxis("销量", x_data[:20], label_opts=opts.LabelOpts(is_show=False), yaxis_index=1)
bar.set_global_opts(
        yaxis_opts=opts.AxisOpts(name="销量", position="right"),
    )
grid = Grid()
grid.add(line, grid_opts=opts.GridOpts())
grid.add(bar, grid_opts=opts.GridOpts())
grid.render_notebook()

  • 整体销量看,RAV4荣芳的合计销量最大;
  • 从均价看,宝马5系虽然均价较高,但是销量还是比较考前的;
  • 对比RAV4荣放和五菱宏光,虽然两者整体销量差异不大,但是均价差异却很大,说明消费者购买车辆,价格只是其中考虑的一部分。

4 分析中国汽车总体销量表

In [87]:

data = pd.read_excel('/home/mw/input/car3784/中国汽车总体销量.xlsx')

In [88]:

data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 201 entries, 0 to 200
Data columns (total 3 columns):
时间    201 non-null datetime64[ns]
销量    201 non-null int64
同比    201 non-null object
dtypes: datetime64[ns](1), int64(1), object(1)
memory usage: 4.8+ KB

In [89]:

data['时间'] = data['时间'].dt.date

In [90]:

data = data.sort_values(by='时间')

In [91]:

line = Line()
line.add_xaxis(data['时间'].tolist())
line.add_yaxis("销量", data['销量'].tolist(),markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]))
line.set_global_opts(
        yaxis_opts=opts.AxisOpts(name="销量"),
        datazoom_opts=[
            opts.DataZoomOpts(type_="inside"),  
            opts.DataZoomOpts(type_="slider")]
        )
line.render_notebook()

In [94]:

data['月'] = pd.to_datetime(data['时间']).dt.month
data_month = data.groupby('月').mean().sort_values('销量',ascending=False)
data_month
销量
121.921240e+06
111.829474e+06
91.730767e+06
101.730715e+06
11.722805e+06
31.666897e+06
61.522088e+06
51.486374e+06
41.482906e+06
81.479686e+06
71.377379e+06
21.146462e+06
  • 汽车销量整体呈上升趋势;
  • 每年的1-8月是淡季,9-12月份是旺季,12月份是销量最好的月份;
  • 2020年2月,汽车销量受疫情影响比较大;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1394802.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五、基础篇 vue列表渲染

在v-for里使用对象用 v-for 把一个数组对应为一组元素 我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in list形式的特殊语法&#xff0c;其中 list是源数据数组&#xff0c;而 item 则是被迭代的数组元素的别名。 <template><div clas…

Cuda与Torch配置(For 集群服务器)超详细步骤

每次配置模型环境&#xff0c;无论是在windows&#xff0c;linux&#xff0c;集群服务器上都会在这里卡一段&#xff0c;为了未来配置方便&#xff0c;记录下配置注意事项 配置cuda和torch主要有几个要点&#xff0c;分别是&#xff1a; 显卡与驱动&#xff08;NIVIADA drive…

如何实现固定公网地址远程访问本地部署的Termux MySQL数据库

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…

Arthas项目实战用法

一、简介 1、项目所在位置 2、安装Arthas 1. 下载arthas-boot.jar 2. 运行arthas-boot.jar 3. 选择进程 3、卸载Arthas 二、核心监视功能 1、monitor&#xff1a;监控方法的执行情况 2、watch&#xff1a;检测函数返回值 3、trace&#xff1a;根据路径追踪&#xff0c;…

java转义字符

//转义字符的使用 public class ChangeChar{//编写一个main方法public static void main(String[] args){// \t :一个制表位&#xff0c;实现对齐的功能System.out.println("北京\t天津\t上海");// \n :换行符&#xff0c;实现换行System.out.println("jack\nsm…

【OJ】牛客链表刷题

题目 1. 链表分割1.1 题目分析1.2 代码 2. 链表的回文结构2.1 题目分析2.2 代码 这里两道与链表有关的题目均来自牛客。 1. 链表分割 1.1 题目分析 因为这里代码不能选择用c语言写&#xff0c;所以选择用c,因为c兼容c。 题目要求分割链表&#xff0c;我们可以直接弄成两个带哨…

【笔记】Helm-3 主题-6 Chart仓库指南

Chart仓库指南 本节介绍如何创建和使用chart仓库。在高层级中&#xff0c;chart仓库是打包的chart存储和分享的位置。 社区的Helm chart仓位于 Artifact Hub &#xff0c;欢迎加入。不过Helm也可以创建并运行您自己的chart仓库。该指南将介绍如何操作。 Artifact Hub 先决条…

威士忌的品鉴之旅麦芽制备:从浸泡、发芽到干燥

麦芽制备是威士忌酿造过程中至关重要的一环&#xff0c;它直接影响到产品的品质和风味。麦芽的制备包括浸泡、发芽、干燥等环节&#xff0c;每个环节都需要严格控制温度、湿度和时间等细节。本文将深入探讨麦芽制备的过程&#xff0c;以雷盛537威士忌&#xff0c;分析麦芽制作过…

4人遇难,北京突发火情 富维烟火识别防止悲剧再次发生

在北京一处居民区&#xff0c;一场突如其来的火灾夺走了四条宝贵的生命。火情迅速蔓延&#xff0c;烟雾弥漫&#xff0c;居民们猝不及防。这一悲剧再次提醒我们&#xff0c;火灾预防和早期识别的重要性不容忽视。 在这样的背景下&#xff0c;北京富维图像公司开发的FIS智能图像…

肯尼斯·里科《C和指针》第7章 函数(2)递归

7.5 递归 C通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。许多教科书都把计算阶乘和斐波那契数列用来说明递归&#xff0c;这是非常不幸的。在第1个例子中&#xff0c;递归并没有提供任何优越之处。在第2个例子中&#xff0c;它的效率之低是非常恐…

中国多家半导体设备厂表现出色,营收可观 | 百能云芯

多家中国半导体设备大厂近日相继发布了2023年度业绩预告&#xff0c;表现出色&#xff0c;营收和净利润均呈现较大幅度的增长&#xff0c;这一利好消息背后得益于半导体行业周期的复苏以及国产半导体需求的持续增长。 据百能云芯电子元器件商城了解&#xff0c;北方华创发布的公…

域中的主机报错1231解决办法

1、 这个一般是使用 net view /domain 的时候出现的报错&#xff0c;若是报错 6118 只需在域控制器中开启 computer browser 服务即可 2、解决了 6118 问题后&#xff0c;在域控制器上已经能使用 net view /domain 了&#xff0c;但是域中的其它主机上会出现 1231 问题&#xf…

单臂路由【新华三与华为区别】

【技术介绍】单臂路由&#xff0c;简单来讲&#xff0c;就是在一个路由器的物理端口上虚拟几个虚拟端口&#xff0c;从而达到节约资源的效果 【背景】 R1上进行单臂路由 【操作】 【华为】 [HW-SWA] vlan batch 10 20 int g0/0/1 port link-type access port default vlan 10…

揭露欧拉骗局5.构建函数1/n>ln(1+1/n)公开作弊

构建函数又名构造函数&#xff0c;是欧系数学的重要解题方法。构建函数最成功的范例是“1/n&#xff1e;ln(11/n)”&#xff0c;它来自欧拉&#xff0c;其手段极其卑劣下作&#xff01;随心所欲、目空一切是欧拉的习惯 欧拉证明1/n&#xff1e;ln(11/n)的操作有两步&#xff1…

【陈老板赠书活动 - 22期】- 人工智能(第三版)

陈老老老板&#x1f9d9;‍♂️ &#x1f46e;‍♂️本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f934;本文简述&#xff1a;活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f473;‍♂️上一篇文章&#xff…

阿里云ack集群管理及故障处理

一、集群管理维护 二、常见故障处理 存储&#xff1a; 网络 弹性伸缩 service

头像空白问题

当用户没有设置头像时&#xff0c;我们可以使用用户名第一个字来当头像 主要涉及一个截取&#xff0c;截取字符串第一个字 变量名.charAt(0) 如果变量名为null或者undefine 那么就会报错 使用可选链操作符 &#xff1f; 当前面的值为nul或undefine时&#xff0c;就不会执行…

MySQL深度分页优化问题

☆* o(≧▽≦)o *☆嗨~我是小奥&#x1f379; &#x1f4c4;&#x1f4c4;&#x1f4c4;个人博客&#xff1a;小奥的博客 &#x1f4c4;&#x1f4c4;&#x1f4c4;CSDN&#xff1a;个人CSDN &#x1f4d9;&#x1f4d9;&#x1f4d9;Github&#xff1a;传送门 &#x1f4c5;&a…

JAVAEE初阶 文件IO(二)

文件IO 一. 文件流1.1 字节流 inputStream(1) try with resources方法 1.2 read方法(1) 第一个read方法(2) 第二个read方法(3) read的第三个方法 1.3 字节流 OutoutStream1.4 字符流(1) reader(2) writer 一. 文件流 1.1 字节流 inputStream 在字节流中,我们使用inputStream和…