数据分析案例-汽车客户信息数据可视化分析(文末送书)

 

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

1.项目背景

2.数据集介绍

3.技术工具

4.导入数据

 5.数据预处理

6.数据探索性分析

6.1不同组别的性别分布

6.2不同组别的年龄分布

6.3不同组别的工作经验vs消费得分

6.4不同组别的客户分布

6.5不同组别的家庭规模

6.6客户年龄分布

6.7工作经验分布

6.8家庭规模分布

6.9相关系数热力图

7.分析总结

8.实验源代码

9.文末福利


1.项目背景

        在当代社会,汽车作为人们生活中不可或缺的交通工具,其销售和使用数据一直受到广泛关注。汽车制造商、销售商以及相关的市场调研机构需要对汽车客户信息进行深入分析,以了解消费者的需求、喜好和行为习惯,从而优化产品设计、提高市场营销效率,并增加销售额。

        随着信息技术的不断发展,数据可视化成为一种强大的工具,可以将大量的汽车客户信息呈现为直观、易懂的图表和图像。通过数据可视化分析,汽车制造商和销售商可以更好地洞察客户群体的特征和行为,例如他们的地理分布、购车偏好、购买决策因素、购车周期等。同时,数据可视化也有助于发现市场趋势和潜在机会,指导企业制定更精准的营销策略,提高竞争力。

        此外,随着大数据技术的普及和应用,汽车行业积累了大量的客户数据,包括车辆销售记录、售后服务反馈、在线咨询聊天记录等。利用这些数据进行可视化分析,可以挖掘更深层次的信息,帮助企业更好地了解客户的需求和意愿。

        综上所述,进行汽车客户信息数据可视化分析对于汽车行业的企业来说具有重要意义,它可以帮助企业做出更明智的决策,提升客户满意度,提高市场份额,进而推动整个汽车产业的发展。

2.数据集介绍

本数据集来源于kaggle,原始数据集共有8068条,11个特征变量,各变量含义解释如下:

ID:客户ID
Gender:客户性别
Ever_Married:客户婚姻状况
Age:客户年龄
Graduated:客户是毕业生吗?
Profession:客户的职业
Work_Experience:多年工作经验
Spending_Score:客户的消费评分
Family_Size:客户家庭成员人数(含客户)
Var_1:客户的匿名类别
Segmentation:(目标)客户的客户群

3.技术工具

Python版本:3.9

代码编辑器:jupyter notebook

4.导入数据

 查看数据大小

查看数据基本信息

数值型变量描述性统计

非数值型变量描述性统计

 5.数据预处理

统计缺失值情况

 删除缺失值

检测数据集是否存在重复值,结果为False说明没有 

6.数据探索性分析

6.1不同组别的性别分布

6.2不同组别的年龄分布

6.3不同组别的工作经验vs消费得分

6.4不同组别的客户分布

6.5不同组别的家庭规模

6.6客户年龄分布

6.7工作经验分布

6.8家庭规模分布

6.9相关系数热力图

7.分析总结

经过前面的数据可视化分析,我们可以总结出以下规律:

细分D:通常是35岁以下的未婚人士,消费得分低,主要在医疗保健行业工作。

细分A:年龄在25岁到53岁之间,结婚率约为55%,消费得分低。职业包括市场营销、娱乐、工程等。主要的家庭规模是1人和2人。

细分B:约75%的结婚率,通常在33岁到55岁之间。混合支出得分分布(低:平均:高的比例为4:3:2)。通常在市场营销部门工作。这部分的家庭通常由2个成员组成。

细分C: 80%左右的结婚率,年龄在32 - 70岁之间。各个细分市场的消费得分各不相同(低:平均:高的比例为3:4:2)。主要从事市场营销工作。这部分的家庭规模通常在2到4人之间。

8.实验源代码

df_train = pd.read_csv('Train.csv')
df_train.head()
df_train.shape
df_train.info()
df_train.describe()
df_train.describe(include='O')
df_train.isnull().sum() # 统计缺失值
df_train.dropna(inplace=True) # 删除缺失值
df_train.shape
any(df_train.duplicated()) # 检测数据集是否存在重复值
# 不同组别的性别分布
sns.countplot(x='Segmentation', hue='Gender', data=df_train)
plt.title("Segmentation based on Gender")
plt.show()
# 不同组别的年龄分布
sns.boxplot(x='Segmentation', y='Age', data=df_train)
plt.title("Age Distribution based on Segmentation")
plt.show()
# 不同组别的工作经验vs消费得分
sns.boxplot(x='Work_Experience', y='Spending_Score', hue='Segmentation', data=df_train)
plt.title("Work Experience vs Spending Score based on Segmentation")
plt.show()
sns.violinplot(x='Segmentation', y='ID', data=df_train)
plt.title("Profession Distribution based on Segmentation")
plt.show()
# 不同组别的家庭规模
plt.figure(figsize=(8,8))
df_train['Family_Size'].value_counts().plot.pie(autopct='%1.1f%%')
plt.title("Family Size Distribution based on Segmentation")
plt.show()
# 客户年龄分布
plt.figure(figsize=(10,5))
sns.histplot(df_train['Age'], kde=True)
plt.title("Distribution of 'Age'")
plt.xlabel("Age")
plt.ylabel("Frequency")
plt.show()
# 工作经验分布
plt.figure(figsize=(10,5))
sns.histplot(df_train['Work_Experience'], kde=True)
plt.title("Distribution of 'Work_Experience'")
plt.xlabel("Work_Experience")
plt.ylabel("Frequency")
plt.show()
# 家庭规模分布
plt.figure(figsize=(10,5))
sns.histplot(df_train['Family_Size'], kde=True)
plt.title("Distribution of 'Family_Size'")
plt.xlabel("Family_Size")
plt.ylabel("Frequency")
plt.show()
# 删除目标变量
df_train_kmeans = df_train.drop(['Segmentation', 'ID'], axis=1)
df_train_kmeans
# 将分类列转换为标签编码列
from sklearn.preprocessing import  LabelEncoder
encoder = LabelEncoder()
df_train_kmeans['Gender'] = encoder.fit_transform(df_train_kmeans['Gender'])
df_train_kmeans['Ever_Married'] = encoder.fit_transform(df_train_kmeans['Ever_Married'])
df_train_kmeans['Graduated'] = encoder.fit_transform(df_train_kmeans['Graduated'])
df_train_kmeans['Profession'] = encoder.fit_transform(df_train_kmeans['Profession'])
df_train_kmeans['Spending_Score'] = encoder.fit_transform(df_train_kmeans['Spending_Score'])
df_train_kmeans['Var_1'] = encoder.fit_transform(df_train_kmeans['Var_1'])
df_train_kmeans.head()
# 相关系数矩阵
corr = df_train_kmeans.corr()
# 绘制热力图
plt.figure(figsize=(10,10))
sns.heatmap(corr, annot=True)
plt.show()

9.文末福利

《Python商业数据挖掘》免费包邮送出3本!

内容简介:

       本书前5版好评如潮,作为第6版,本书首次使用了Python语言。本书除了介绍用于统计和机器学习等领域的预测、分类、可视化、降维、推荐系统、聚类、文本挖掘、网络分析等方法之外,内容还包括:

● 新加入的合著者Peter Gedeck拥有使用Python讲解商业分析课程的丰富经验以及将机器学习应用于新药发现过程的专业技能。在本书中,他十分乐于将这些经验和技能与读者分享。

● 讨论数据挖掘中的伦理问题。

● 根据教师和学生的反馈意见对内容做了更新。

● 通过多个案例展示数据挖掘技术的实际应用。

● 每章后面的习题有助于读者评估和加深对该章内容的理解。

● 在线支持网站提供了数据集、教学资料、习题答案、PPT教案和案例解决方案。

 

  • 抽奖方式:评论区随机抽取3位小伙伴免费送出!
  • 参与方式:关注博主、点赞、收藏、评论区评论“人生苦短,拒绝内卷!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!
  • 活动截止时间:2023-08-30 20:00:00
  • 购买链接:http://product.dangdang.com/29322346.html

 名单公布时间:2023-08-30 21:00:00   

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

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

相关文章

SElinux avc 打印及关闭

Android SELinux的avc:denied log 是哪里打印的及关闭? 某些场景下并不需要打开SELinux,也就是SELinux设为Permissive,但如果程序设计不符合SELinux sepolicy,日志会频繁打印如下类似avc:denied 的 log。 如下: [ …

用加持了大模型的 Byzer-Notebook 做数据分析是什么体验

Byzer-Notebook 是专门为 SQL 而研发的一款 Web Notebook。他的第一公民是 SQL,而 Jupyter 则是是以 Python 为第一公民的。 随着 Byzer 引擎对大模型能力的支持日渐完善, Byzer-Notebook 也在不自觉中变得更加强大。我和小伙伴在聊天的过程中才发现他已…

Android 12 源码分析 —— 应用层 二(SystemUI大体组织和启动过程)

Android 12 源码分析 —— 应用层 二(SystemUI大体组织和启动过程) 在前一篇文章中,我们介绍了SystemUI怎么使用IDE进行编辑和调试。这是分析SystemUI的最基础,希望读者能尽量掌握。 本篇文章,将会介绍SystemUI的大概…

libevent源码学习6---链接监听器evconnlistener

libevent源码学习6—链接监听器evconnlistener evconnlistener 机制提供了监听和接受 TCP 连接的方法。 struct evconnlistener {const struct evconnlistener_ops *ops;void *lock;evconnlistener_cb cb;evconnlistener_errorcb errorcb;void *user_data;unsigned flags;sho…

职业技术培训内容介绍

泰迪职业技术培训包括:Python技术应用、大数据技术应用、机器学习、大数据分析 、人工智能技术应用。 职业技术培训-Python技术应用 “Python技术应用工程师”职业技术认证是由工业和信息化部教育与考试中心推出一套专业化、科学化、系统化的人才考核标准&…

行业追踪,2023-08-24

自动复盘 2023-08-24 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

Hadoop分布式计算与资源调度:打开专业江湖的魔幻之门

文章目录 版权声明一 分布式计算概述1.1 分布式计算1.2 分布式(数据)计算模式1.3 小结 二 MapReduce概述2.1 分布式计算框架 - MapReduce2.2 MapReduce执行原理2.3 小结 三 YARN概述3.1 YARN & MapReduce3.2 资源调度3.3 程序的资源调度3.4 YARN的资…

进程同步

目录 临界区(Critical Section): 互斥量(Mutex): 信号量(Semaphore): 事件(Event): 进程同步的四种方法 临界区(Critical Section): 通过对多线程的串行…

Apache Hudi初探(二)(与flink的结合)--flink写hudi的操作(JobManager端的提交操作)

背景 在Apache Hudi初探(一)(与flink的结合)中,我们提到了Pipelines.hoodieStreamWrite 写hudi文件,这个操作真正写hudi是在Pipelines.hoodieStreamWrite方法下的transform(opName("stream_write", conf), TypeInformation.of(Object.class), operatorFa…

AI加持,创意设计效率百倍提升,探秘背后的数字化魔法

在当今创新潮流不断涌现的时代,人工智能正以惊人的速度和深度赋能各行各业,食品包装设计界也已来到了一个“拼创意、拼二创和拼审美”的时代。有了AI的加入,设计界正迎来一股AI创意风暴,不仅颠覆了设计流程,更为食品包…

go MongoDB

安装 go get go.mongodb.org/mongo-driver/mongo package mongodbexampleimport ("context""fmt""ginapi/structs""time""go.mongodb.org/mongo-driver/bson""go.mongodb.org/mongo-driver/bson/primitive""…

全流程R语言Meta分析核心技术高阶应用

查看原文>>>全流程R语言Meta分析核心技术高阶应用 目录 专题一、Meta分析的选题与检索 专题二、Meta分析与R语言数据清洗及统计方法 专题三、R语言Meta分析与作图 专题四、R语言Meta回归分析 专题五、R语言Meta诊断分析 专题六、R语言Meta分析的不确定性 专题…

Linux centos7 bash编程小训练

训练要求: 求比一个数小的最大回文数 知识点: 一个数字正读反读都一样,我们称为回文数,如5、11、55、121、222等。 我们训练用bash编写一个小程序,由我们标准输入一个整数,计算机将显示出一个比这个数小…

最新ai系统ChatGPT程序源码+详细搭建教程+mj以图生图+Dall-E2绘画+支持GPT4+AI绘画+H5端+Prompt知识库

目录 一、前言 二、系统演示 三、功能模块 3.1 GPT模型提问 3.2 应用工作台 3.3 Midjourney专业绘画 3.4 mind思维导图 四、源码系统 4.1 前台演示站点 4.2 SparkAi源码下载 4.3 SparkAi系统文档 五、详细搭建教程 5.1 基础env环境配置 5.2 env.env文件配置 六、环境…

Java设计模式之建造者模式

建造者模式,又称生成器模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 三个角色:建造者、具体的建造者、监工、使用者 建造者角色:定义生成实例所需要的所有方法; 具体的建…

力扣--数组类题目27. 移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 示例 1: 输入:nums [3,2,2,3], val 3 输出:2, nums [2,2] 解释:函数应该返回新的长度 2, 并且 n…

曲面(弧面、柱面)展平(拉直)瓶子标签识别ocr

瓶子或者柱面在做字符识别的时候由于变形,识别效果是很不好的 或者是检测瓶子表面缺陷的时候效果也没有展平的好 下面介绍两个项目,关于曲面(弧面、柱面)展平(拉直) 项目一:通过识别曲面的6个点…

《Go 语言第一课》课程学习笔记(十)

复合数据类型 同构复合类型:从定长数组到变长切片 由多个同构类型(相同类型)或异构类型(不同类型)的元素的值组合而成,这类数据类型在 Go 语言中被称为复合类型。 数组有哪些基本特性? Go 语…

c语言 - inline关键字(内联函数)

概念 在编程中,inline是一个关键字,用于修饰函数。inline函数是一种对编译器的提示,表示这个函数在编译时应该进行内联展开。 内联展开是指将函数的代码插入到调用该函数的地方,而不是通过函数调用的方式执行。这样可以减少函数调…

用手势操控现实:OpenCV 音量控制与 AI 换脸技术解析

基于opencv的手势控制音量和ai换脸 HandTrackingModule.py import cv2 import mediapipe as mp import timeclass handDetector():def __init__(self, mode False, maxHands 2, model_complexity 1, detectionCon 0.5, trackCon 0.5):self.mode modeself.maxHands max…