汽车销售数据可视化分析实战

1、任务

市场需求:各年度汽车总销量及环比,各车类、级别车辆销量及环比

消费能力/价位认知:车辆销售规模及环比、不同价位车销量及环比

企业/品牌竞争:各车系、厂商、品牌车销量及环比,市占率及变化趋势

热销车型:品牌、车类、车型、级别的各top销量

2、数据预处理

1、数据的读取

import pandas as pd
data = pd.read_csv("数据/car_selling_fact.csv",encoding="gbk")

2、数据探索

#查看数据形状
data.shape                               #(7122, 13)#查看是否有重复值
data.duplicated().sum()                  # 0#整体查看
data.info()"""
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 7122 entries, 0 to 7121
Data columns (total 13 columns):#   Column      Non-Null Count  Dtype  
---  ------      --------------  -----  0   Unnamed: 0  7122 non-null   object 1   车系          7122 non-null   object 2   厂商          7122 non-null   object 3   车类          7122 non-null   object 4   品牌          7122 non-null   object 5   车型          7122 non-null   object 6   级别          7122 non-null   object 7   价格          7122 non-null   int64  8   时间          7122 non-null   object 9   销量          7122 non-null   int64  10  销售规模(亿)     7122 non-null   float6411  省份          7122 non-null   object 12  城市          7122 non-null   object 
dtypes: float64(1), int64(2), object(10)
memory usage: 723.5+ KB"""#查看数据前5行
data.head() 

3、进行数据预处理

将时间列转化为 datetime 格式

增加 年份这一列

将价格离散化成5个区间:低档、中档、中高档、高档、豪华


data["时间"] = pd.to_datetime(data["时间"],errors="coerce")data["年份"] = data["时间"].apply(lambda x:x.year)data["价位"] = pd.cut(data["价格"],bins=5,labels=['低档', '中档', '中高档', '高档', '豪华']) data.iloc[0,:]  #查看第一行全部列数据"""
Unnamed: 0    I8a8a4ca2016dfb9ffb9f77ba016e1155772543c7
车系                                                   韩系
厂商                                               东风悦达起亚
车类                                                  SUV
品牌                                                   起亚
车型                                                   智跑
级别                                                   紧凑
价格                                                   17
时间                                  2019-06-30 00:00:00
销量                                                 2955
销售规模(亿)                                          5.0235
省份                                                   江苏
城市                                                   盐城
年份                                                 2019
价位                                                   中档
Name: 0, dtype: object"""

4、计算各年度总销量及环比增长率

环比增长率=(本期数-上期数)/上期数×100%

#取出年份与销量两列数据,并根据年份进行分组求和
diff_year= data[["年份","销量"]].groupby("年份").sum().reset_index()#计算列上下相邻的差值
diff =  diff_year.diff()diff_year["diff"] = list(diff["销量"]) #计算环比
diff_year["rate"] = [None] + list(diff_year["diff"].values[1:]  / diff_year["销量"].values[:-1]*100)diff_year"""
年份	销量	diff	rate
0	2015	14594487	NaN	NaN
1	2016	16952990	2358503.0	16.160232
2	2017	17576436	623446.0	3.677499
3	2018	17568751	-7685.0	-0.043723
4	2019	7464071	-10104680.0	-57.515073
"""

5、绘制各年度总销量柱状图及环比增长率折线图

plt.rcParams["font.sans-serif"] = "Microsoft YaHei"   #设置显示中文,微软雅黑字体支持负号fig = plt.figure(figsize=(12,8))   #设置画布ax1 = plt.subplot(1,1,1)    #设置子图plt.xlabel("年份",fontsize=15)plt.ylabel("总销量(亿)",fontsize=15)plt.title("各年度总销量柱状图及环比增长率折线图",fontsize=20)ax1.bar(diff_year["年份"],diff_year["销量"],color=['#E0FFFF', '#76EEC6', '#66d88e', '#66CDAA', '#8FBC8F'])ax2 = ax1.twinx()     # 使 ax1 与 ax2 同 x 轴,不同 y 轴ax2.plot(diff_year["年份"],diff_year["rate"],c="green")plt.ylabel("环比增长率(%)")plt.xticks(diff_year["年份"],diff_year["年份"], fontsize=10)plt.show()

 6、各年度总各车类销量及环比增长率

year_chelei =data.pivot_table(index="年份",columns="车类",values="销量",aggfunc="sum",fill_value=0)year_chelei["diff_MPV"] = year_chelei["MPV"].diff()year_chelei["diff_SUV"] = year_chelei["SUV"].diff()year_chelei["diff_轿车"] = year_chelei["轿车"].diff()year_chelei["rate_MPV"] = [None]+list(year_chelei["diff_MPV"].values[1:] / year_chelei["MPV"].values[:-1]*100)year_chelei["rate_SUV"] = [None] + list(year_chelei["diff_SUV"].values[1:] / year_chelei["SUV"].values[:-1]*100)year_chelei["rate_轿车"] = [None] + list(year_chelei["diff_轿车"].values[1:] /  year_chelei["轿车"].values[:-1]*100)year_chelei = year_chelei[["MPV","SUV","轿车","rate_MPV","rate_SUV","rate_轿车"]]"""
车类	MPV	SUV	轿车	rate_MPV	rate_SUV	rate_轿车
年份						
2015	409042	4821500	9363945	NaN	NaN	NaN
2016	474380	6058928	10419682	15.973421	25.664793	11.274490
2017	442669	6871876	10261891	-6.684725	13.417357	-1.514355
2018	561307	7111774	9895670	26.800612	3.491012	-3.568748
2019	215394	3094016	4154661	-61.626347	-56.494456	-58.015364
"""

画图方法与 5 类似

7、不同车类的年度销量分析柱状图(将年份列重新命名为 year)

tmp = pd.pivot_table(data=data, index='车类', columns='year', values='销量', aggfunc='sum', fill_value=0)def bar_plot(tmp=None, bar_width=0.3, x=np.array([0, 2, 4]), title='汽车车类销量情况可视化'):years = tmp.columnscols = ['#E0FFFF', '#76EEC6', '#66d88e', '#66CDAA', '#8FBC8F']    # 各年份柱子的颜色a, b = tmp.values.min(), tmp.values.max()                         # 取出数据的最大最小值,供设定坐标轴范围for i, year in enumerate(years):                                  # 绘图plt.bar(x+i*bar_width, tmp[year], bar_width, color=cols[i])plt.ylim(0, 1.1*b)                                          # 设置y轴取值范围plt.legend(['{}年'.format(year) for year in years])         # 添加图例plt.xticks(x+bar_width*2, labels=tmp.index, color='#228B22', fontsize=15)   # 设置x轴刻度值# 添加文字描述plt.text(max(x)/2 + 0.4, b, title, fontsize=20, color='#006400', alpha=0.7, ha='center')plt.show()bar_plot(tmp=tmp, bar_width=0.3, x=np.array([0, 2, 4]), title='汽车车类销量情况可视化')

 

8、各年度 品牌销量前五

year_pinpai = data[["年份","品牌","销量"]].pivot_table(index="年份",columns="品牌",values="销量",aggfunc="sum")#2015年
five= year_pinpai.iloc[0,:].sort_values(ascending=False)[:5].reset_index()five = five.sort_values(by=2015)five
"""品牌	 2015
4	别克	952201.0
3	现代	1028391.0
2	本田	1058246.0
1	丰田	1444765.0
0	大众	2618420.0"""#2016年
six = year_pinpai.iloc[1,:].sort_values(ascending=False)[:5].reset_index()
six = six.sort_values(by=2016)#2017年
seven = year_pinpai.iloc[2,:].sort_values(ascending=False)[:5].reset_index()
seven#2018年
eig = year_pinpai.iloc[3,:].sort_values(ascending=False)[:5].reset_index()
eig#2019年
nine= year_pinpai.iloc[4,:].sort_values(ascending=False)[:5].reset_index()
nine

9、绘制2015年品牌销量 Top5

plt.rcParams["font.sans-serif"] = "Microsoft YaHei"fig = plt.figure(figsize=(12,8))plt.ylabel("品牌",fontsize=15)plt.xlabel("销量",fontsize=15)plt.title("2015年品牌销量 Top5",fontsize=20)plt.barh(five["品牌"],five[2015])plt.show()

 其它top绘制类似

10、分析各车系销量及环比,市占率

year_chexi = data[["年份","车系","销量"]].pivot_table(index="年份",columns="车系",values="销量",aggfunc="sum").reset_index()year_chexi["diff_德系"] = year_chexi["德系"].diff()
year_chexi["diff_日系"] = year_chexi["日系"].diff()
year_chexi["diff_法系"] = year_chexi["法系"].diff()
year_chexi["diff_美系"] = year_chexi["美系"].diff()
year_chexi["diff_自主"] = year_chexi["自主"].diff()
year_chexi["diff_韩系"] = year_chexi["韩系"].diff()year_chexi["rate_德系"] = [None] + list(year_chexi["diff_德系"].values[1:] / year_chexi["德系"].values[:-1]*100)
year_chexi["rate_日系"] = [None] + list(year_chexi["diff_日系"].values[1:] / year_chexi["日系"].values[:-1]*100)
year_chexi["rate_法系"] = [None] + list(year_chexi["diff_法系"].values[1:] / year_chexi["法系"].values[:-1]*100)
year_chexi["rate_美系"] = [None] + list(year_chexi["diff_美系"].values[1:] / year_chexi["美系"].values[:-1]*100)
year_chexi["rate_自主"] = [None] + list(year_chexi["diff_自主"].values[1:] / year_chexi["自主"].values[:-1]*100)
year_chexi["rate_韩系"] = [None] + list(year_chexi["diff_韩系"].values[1:] / year_chexi["韩系"].values[:-1]*100)
rate_chexi = year_chexi[["年份","德系","日系","法系","美系","自主","韩系","rate_德系","rate_日系","rate_法系","rate_自主","rate_韩系"]]
rate_chexi"""
车系	年份	德系	日系	法系	美系	自主	韩系	rate_德系	rate_日系	rate_法系	rate_自主	rate_韩系
0	2015	3749142	3550863	546730	2673435	2502912	1571405	NaN	NaN	NaN	NaN	NaN
1	2016	4400123	3366714	520709	2676442	4263125	1725877	17.363466	-5.186035	-4.759388	70.326604	9.830184
2	2017	4705727	3848282	246358	2613015	5198111	964943	6.945351	14.303799	-52.687970	21.931940	-44.089700
3	2018	4911413	4012052	95855	2059249	5470155	1020027	4.370972	4.255665	-61.091176	5.233517	5.708524
4	2019	2251150	1954618	14688	790426	2095425	357764	-54.164922	-51.281339	-84.676856	-61.693499	-64.926026"""

11、绘制2015年各车系市占率市占率

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = "Microsoft YaHei"
fig = plt.figure(figsize=(8,8))
plt.title("2015年各车系市占率市占率")
plt.pie(rate_chexi.iloc[0,1:7], labels=["德系","日系","法系","美系","自主","韩系"], autopct='%.2f %%', explode=[0.01, 0.01, 0.1, 0.01, 0.01,0.01],colors=['#E0FFFF', '#76EEC6', '#66d88e', '#66CDAA', '#8FBC8F', '#006400'])
plt.show()

 

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

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

相关文章

python多线程排查

问题 公司服务总是莫名其妙的cpu饱满排查了代码中的定时任务&#xff0c;排除之后仍经常出现类似问题。是时候debug了 排查过程 cpu劣化是一个过程&#xff0c;cpu持续增长到60%&#xff0c;然后突然服务雪崩不服务了。排查下来看sleep的物理线程和cpu增长的幅度一致 那么…

hadoop安全保护机制(kerberos + ldap)

信息安全理论&#xff1a; CIA模型&#xff1a;机密性、完整性和可用性 CIA模型能够帮助建议一些信息安全原则&#xff0c;但该模型并不是一个需要严格遵守的规则 hadoop平台可能设计多个CIA模型组件&#xff0c;也kennel一个也不涉及 机密性&#xff1a; 信息只应该被期望的…

探索AI图像安全,助力可信AI发展

探索AI图像安全&#xff0c;助力可信AI发展 0. 前言1. 人工智能发展与安全挑战1.1 人工智能及其发展1.2 人工智能安全挑战 2. WAIC 2023 多模态基础大模型的可信 AI2.1 WAIC 2023 专题论坛2.2 走进合合信息 3. AI 图像安全3.1 图像篡改检测3.2 生成式图像鉴别3.3 OCR 对抗攻击技…

Vis相关的期刊会议

中国计算机学会推荐国际学术会议和期刊目录 文档&#xff0c; 下载 link&#xff1a;CCF推荐国际学术刊物目录-中国计算机学会 一.可视化方向文章 1.IEEE VIS&#xff0c;是由 IEEE Visualization and Graphics Technical Committee(VGTC) 主办的数据可视化领域的顶级会议&a…

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 17 日论文合集)

文章目录 一、检测相关(5篇)1.1 TALL: Thumbnail Layout for Deepfake Video Detection1.2 Cloud Detection in Multispectral Satellite Images Using Support Vector Machines With Quantum Kernels1.3 Multimodal Motion Conditioned Diffusion Model for Skeleton-based Vi…

【Linux】自动化构建工具-make/Makefile详解

前言 大家好吖&#xff0c;欢迎来到 YY 滴 Linux系列 &#xff0c;热烈欢迎&#xff01;本章主要内容面向接触过Linux的老铁&#xff0c;主要内容含 欢迎订阅 YY 滴Linux专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 订阅专栏阅读&#xff1a;YY的《…

深度学习——LSTM解决分类问题

RNN基本介绍 概述 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种深度学习模型&#xff0c;主要用于处理序列数据&#xff0c;如文本、语音、时间序列等具有时序关系的数据。 核心思想 RNN的关键思想是引入了循环结构&#xff0c;允许…

什么是剪贴板劫持-剪贴板劫持教程

目录 前言 什么是剪贴板劫持如何避免剪贴板劫持&#xff1f;如何执行剪贴板劫持&#xff1f; 总结 前言 我来写剪贴板劫持教程。 什么是剪贴板劫持 剪贴板劫持是一种危险的攻击技术&#xff0c;借助该攻击者可以控制受害者的剪贴板并将恶意代码粘贴到目标机器中&#xff0c;…

基于单片机的语音识别智能垃圾桶垃圾分类的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;液晶显示当前信息和状态&#xff1b;通过语音识别模块对当前垃圾种类进行语音识别&#xff1b; 通过蜂鸣器进行声光报警提醒垃圾桶已满&#xff1b;采用舵机控制垃圾桶打开关闭&#xff1b;超声波检测当前垃圾桶满溢程度&#xff1…

认识spring项目的创建 和 从spring中进行Bean对象的存取

前言 本篇简单介绍如何创建spring项目&#xff0c;如何存储到spring容器中&#xff0c;如何从容器中获取Bean对象&#xff0c;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1. 创建spring项目2. 将Bean对象存…

RS485/RS232自由转ETHERNET/IP网关rs485和232接口一样吗

你是否曾经遇到过这样的问题&#xff1a;如何将ETHERNET/IP网络和RS485/RS232总线连接起来呢&#xff1f; 远创智控的YC-EIP-RS485/232通讯网关&#xff0c;自主研发的ETHERNET/IP从站功能&#xff0c;完美解决了这个难题。这款网关不仅可以将ETHERNET/IP网络和RS485/RS232总线…

服务器数据恢复-ESX SERVER无法连接到STORAGE的数据恢复案例

服务器数据恢复环境&#xff1a; 某公司信息管理平台&#xff0c;数台VMware ESX SERVER虚拟机共享一台IBM某型号存储。 服务器故障&#xff1a; VC报告虚拟磁盘丢失&#xff0c;管理员ssh到ESX中执行fdisk -l命令查看磁盘&#xff0c;发现STORAGE已经没有分区表了。重启设备后…

WAIC2023:图像内容安全黑科技助力可信AI发展

目录 0 写在前面1 AI图像篡改检测2 生成式图像鉴别2.1 主干特征提取通道2.2 注意力模块2.3 纹理增强模块 3 OCR对抗攻击4 助力可信AI向善发展总结 0 写在前面 2023世界人工智能大会(WAIC)已圆满结束&#xff0c;恰逢全球大模型和生成式人工智能蓬勃兴起之时&#xff0c;今年参…

C++第五讲

思维导图 续&#xff1a;myString类完善 /* ---------------------------------author&#xff1a;YoungZorncreated on 2023/7/19 19:20.--------------------------------- */ #include<iostream> #include<cstring>using namespace std;class myString { priva…

社区发现相关算法

目录 **社区检测与聚类****社区检测技术**1. Louvain 社区检测[2]2. Surprise社区检测[3]3. 莱顿社区检测[4]4. Walktrap 社区检测[5] 结论5.LPA 标签传播6.K-L算法7.GN算法8.Newman快速算法 SlashBurn: Graph Compression and Mining beyond Caveman CommunitiesReferences 摘…

WebSocket笔记

1. websocket介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#xff1a; HTTP是短连接W…

【EXCEL】通过url获取网页表格数据

目录 0.环境 1.背景 2.具体操作 0.环境 windows excel2021 1.背景 之前我用python的flask框架的爬虫爬取过豆瓣网的电影信息&#xff0c;没想到excel可以直接通过url去获取网页表格内的信息&#xff0c;比如下图这是电影信息界面 即将上映电影 (douban.com) 通过excel操作&…

商品信息管理-亿发商品进销存管理系统,批发行业零售门店免费试用

众所周知&#xff0c;批发零售行业面临着商品品类繁多、品牌众多、商品信息量庞大等挑战。同时&#xff0c;商品售价波动频繁&#xff0c;还需要管理商品批次&#xff0c;避免积压过期。针对这些传统批发零售行业的管理难题&#xff0c;加快行业数字化转型成为解决之道&#xf…

不同局域网下使用Python自带HTTP服务进行文件共享「端口映射」

文章目录 1. 前言2. 视频教程3. 本地文件服务器搭建3.1 python的安装和设置3.2 cpolar的安装和注册 4. 本地文件服务器的发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6. 结语 1. 前言 数据共享作为和连接作为互联网的基础应用&#xff0c;不仅在商业和办公场景有…

目标检测——FasterRCNN原理与实现

目录 网络工作流程数据加载模型加载模型预测过程RPN获取候选区域FastRCNN进行目标检测 模型结构详解backboneRPN网络anchorsRPN分类RPN回归Proposal层 ROIPooling目标分类与回归 FasterRCNN的训练RPN网络的训练正负样本标记RPN网络的损失函数训练过程实现正负样本设置损失函数 …