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

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   float64
 11  省份          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.columns
    cols = ['#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()

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT与Claude对比分析

一 简介 1、ChatGPT: 访问地址&#xff1a;https://chat.openai.com/ 由OpenAI研发,2022年11月发布。基于 transformer 结构的大规模语言模型,包含1750亿参数。训练数据集主要是网页文本,聚焦于流畅的对话交互。对话风格友好,回复通顺灵活,富有创造性。存在一定的安全性问题,可…

亚马逊云科技,加速生成式AI的落地

编辑&#xff1a;阿冒 设计&#xff1a;沐由 “展望今天的世界&#xff0c;在机遇之外&#xff0c;更多事后我们看到的是前所未有的巨大挑战。事实证明&#xff0c;惟有通过创新、专注创新&#xff0c;方能挖掘和发现更多的增长机会。” 在2023亚马逊云科技中国峰会的第二天&am…

OpenCV(图像处理)-图片搜索

图片搜索 1.知识介绍2.实现流程2.1 计算特征点与描述子2.2 描述子的匹配2.3 求出单应性矩阵并画出轮廓2.4 将特征点标出 此篇博客作者仍在探索阶段&#xff0c;还有一些模糊的概念没有弄懂&#xff0c;请读者自行分辨。 1.知识介绍 Opencv进行图片搜索需要的知识有&#xff1…

MWeb Pro for Mac(苹果电脑最好用的Markdown编辑器)安装教程

MWeb Pro是一款专业的Mac平台上的Markdown编辑器&#xff0c;可以帮助用户更加高效地书写和排版文本内容&#xff0c;支持多种文本格式的导入和导出&#xff0c;如HTML、RTF、PDF等&#xff0c;还支持实时预览和代码高亮等功能&#xff0c;为用户提供了非常优秀的Markdown编辑体…

Linux与Windows:操作系统的比较与技巧分享

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

校园跑腿小程序都包括哪些业务呢?

校园创业&#xff0c;大家都知道&#xff0c;一直以来是个非常火热的话题&#xff0c;每位步入大学校园的学子们都有过在校创业的想法&#xff0c;包括我们一些有着学校资源的社会创业者们&#xff0c;早已经看好了中国高校这块巨大的市场。 在这里&#xff0c;我要跟大家分享…

遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型应用

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

用Python画一面五星红旗

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

Tomcat工作原理

一、Tomcat架构 ### 说明&#xff1a; Server&#xff1a;表示整个 Tomcat Catalina servlet 容器&#xff0c;Server 中可以有多个 Service。&#xff08;可以通过telenet 8005后连接后输入“SHUTDOWN” 注意这里是大写&#xff0c;来关闭服务&#xff09;Service&#xff1…

Linux进程信号【信号处理】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、信号的处理时机1.1、处理情况1.2、"合适" 的时机 2、用户态与内…

Spring Boot 中的 Redis 的数据操作配置和使用

Spring Boot 中的 Redis 的数据操作配置和使用 Redis 是一种高性能的 NoSQL 数据库&#xff0c;它支持多种数据结构&#xff0c;包括字符串、哈希、列表、集合和有序集合。Redis 还提供了丰富的命令&#xff0c;可以对数据进行快速的 CRUD 操作。Spring Boot 是一个基于 Sprin…

做爬虫如何选择Python和C语言

目录 优劣势分析 Python 进行爬虫的优势&#xff1a; Python 进行爬虫的劣势&#xff1a; C进行爬虫的优势&#xff1a; C进行爬虫的劣势&#xff1a; 示例代码说明 Python 示例代码&#xff1a; C语言 示例代码&#xff1a; 怎么选择 优劣势分析 Python 进行爬虫的优…

golang waitgroup

案例 WaitGroup 可以解决一个 goroutine 等待多个 goroutine 同时结束的场景&#xff0c;这个比较常见的场景就是例如 后端 worker 启动了多个消费者干活&#xff0c;还有爬虫并发爬取数据&#xff0c;多线程下载等等。 我们这里模拟一个 worker 的例子 package mainimport (…

Maven下载和配置教程:Windows、Mac和Linux系统安装指南

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

自动化测试集成指南 -- 本地单元测试

构建本地单元测试 简介&#xff1a; 单元测试(Unit Test) 是针对 程序的最小单元 来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。一个单元可能是单个程序、类、对象、方法等。 如何区分单元测试和集成测试&#xff0c;一般情况下&#xff0c;单元测试应该不…

2023AU软件,Adobe Audition 全系列软件下载安装教程

Audition 是一款强大的音频编辑软件&#xff0c;能够帮助用户实现各种音频剪辑和混音操作。下面是关于Audition 2023软件的安装教程&#xff0c;供大家参考。 步骤一&#xff1a;下载Audition 通过全系列网站下载或者百度网盘下载都行 步骤二&#xff1a;运行安装程序 下载…

K8s 为什么要弃用 Docker

K8s 为什么要弃用 Docker 最近在学习容器技术的过程中&#xff0c;看到有关于Kubernetes“弃用 Docker”的事情&#xff0c;担心现在学 Docker 是否还有价值&#xff0c;是否现在就应该切换到 containerd 或者是其他 runtime。 随着深入了解&#xff0c;这些疑虑的确是有些道理…

如何用https协议支持小程序

步骤一&#xff1a;下载SSL证书 登录数字证书管理服务控制台。在左侧导航栏&#xff0c;单击SSL 证书。在SSL证书页面&#xff0c;定位到目标证书&#xff0c;在操作列&#xff0c;单击下载。 在服务器类型为Nginx的操作列&#xff0c;单击下载。 解压缩已下载的SSL证书压缩…

如何设计一个注册中心?(1)概念

1. 为什么需要注册中心 一个集群中有众多服务&#xff0c;每个服务有N个实例&#xff0c;因此需要一个第三方节点来存放每个服务的信息&#xff0c;这样服务需要其它的服务信息&#xff0c;直接到第三方节点获取就行了。这个第三方的节点&#xff0c;就是注册中心。 2. 注册中…

面试题之MySQL事物的特性

在关系性数据库管理系统配置&#xff0c;一个逻辑工作要成为事物&#xff0c;必须要满足4个特性&#xff0c;即所谓的ACID:原子性(Atomicity),一致性(Consistency)、隔离性(lsolation)和持久性(Durability)。 原子性: 原子性:事物作为一个整体被执行&#xff0c;包含在其中对…