数据分析案例-顾客购物数据可视化分析(文末送书)

news2024/11/20 22:41:10

 

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

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


目录

1.项目背景

2.数据集介绍

3.技术工具

4.导入数据

5.数据可视化

5.1分析性别比例

5.2年龄分布

5.3购物种类分析

5.4产品型号分析 

5.5其他分析

6.总结

文末推荐与福利


1.项目背景

        随着现代电子商务的飞速发展,顾客购物数据量也在飞速增长。这些数据包含了丰富的信息,如消费者的购买习惯、喜好、趋势等。然而,如何有效地处理和利用这些数据,使其为商业决策提供有价值的洞见,成为了一个重要的问题。为此,通过数据可视化技术,将复杂的数据转化为直观、易理解的图形,可以帮助企业更好地理解市场和消费者行为,进一步优化商业决策。

        顾客购物数据的可视化具有广泛的应用场景。例如,商家可以通过对顾客的购买历史进行分析,了解顾客的购买习惯和喜好,从而为他们推荐更符合其需求的产品或服务。此外,商家还可以通过数据可视化来识别销售趋势,预测未来的销售情况,从而制定更有效的销售策略。

        本项目旨在通过数据可视化技术,对顾客购物数据进行深入挖掘和分析,为商家提供全面的市场分析和商业洞察。通过使用先进的数据可视化工具和技术,我们将从大量的顾客购物数据中提取有价值的信息,并通过直观的图形展示出来,帮助商家更好地理解市场和消费者行为,优化商业决策。

2.数据集介绍

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

Customer ID- 每个客户的唯一标识符

Age- 顾客的年龄

Gender- 顾客的性别(男/女)

Item Purchased- 客户购买的商品

Category- 购买商品的类别

Purchase Amount (USD)- 以美元计的购买金额

Location- 购买地点

Size- 购买商品的尺寸

Color- 购买商品的颜色

Season- 购买的季节

Review Rating- 客户对所购买商品的评分

Subscription Status- 指示客户是否有订阅(是/否)

Shipping Type- 客户选择的运输类型

Discount Applied- 指示购买时是否应用折扣(是/否)

Promo Code Used- 指示购买时是否使用了促销代码(是/否)

Previous Purchases- 客户先前购买的次数

Payment Method- 客户最喜欢的付款方式

Frequency of Purchases- 客户购买的频率(例如每周、每两周、每月)

3.技术工具

Python版本:3.9

代码编辑器:jupyter notebook

4.导入数据

首先导入本次实验用到的可视化第三方库,并加载数据集

# 导包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 导入数据
data=pd.read_csv("shopping_trends_updated.csv")
data.head()

接着查看一下数据集的基本信息

# 查看有关数据集的一些基本信息
def summary(data):
    print(f'data shape : {data.shape}')
    sum=pd.DataFrame(data.dtypes,columns=['data type'])
    sum["Missing"]=data.isnull().sum()
    sum["%Missing"]=(data.isnull().sum()/len(data))*100
    sum['#unique']=data.nunique().values
    desc=pd.DataFrame(data.describe(include="all").transpose())
    sum['min']=desc['min'].values
    sum['max']=desc['max'].values
    sum['first value']=data.loc[0].values
    sum['second value']=data.loc[1].values
    sum['Third value']=data.loc[2].values
    
    return sum
summary(data)

可以发现该数据集的形状为(3900,18)。在这个数据中,有13个分类列和5个数值列。没有缺失值。客户总数为3900。

5.数据可视化

5.1分析性别比例

colors = ["#89CFF0", "#FF69B4", "#FFD700", "#7B68EE", "#FF4500",
          "#9370DB", "#32CD32", "#8A2BE2", "#FF6347", "#20B2AA",
          "#FF69B4", "#00CED1", "#FF7F50", "#7FFF00", "#DA70D6"]
# 性别比例
plt.figure(figsize=(6, 4))
G_vis = data['Gender'].value_counts()
bars = plt.bar(G_vis.index, G_vis.values, color='gray')
plt.xlabel('Gender')
plt.ylabel('Number of Gender')
plt.title('Gender Distribution')
# 给图表填上数据
for bar in bars:
    plt.text(bar.get_x() + bar.get_width() / 2, bar.get_height(), str(int(bar.get_height())), ha='center', va='bottom')

plt.show()

plt.figure(figsize = (20, 6))
counts = data["Gender"].value_counts()
explode = (0,0.1)
counts.plot(kind = 'pie', fontsize = 12, colors = colors, explode = explode, autopct = '%1.1f%%')
plt.xlabel('Gender', weight = "bold", color = "#2F0F5D", fontsize = 14, labelpad = 20)
plt.axis('equal')
plt.legend(labels = counts.index, loc = "best")
plt.show()

可以看出该数据集的顾客是男性多于女性的。 

5.2年龄分布

# 年龄分布
plt.figure(figsize=(8, 4))
plt.hist(data['Age'],edgecolor = 'black',alpha=0.7,bins=25,color = 'skyblue',density=True)
data['Age'].plot(kind='kde', color = 'red')
plt.xlabel('Age')
plt.ylabel('Count / Density')
plt.title('Age Distribution Histogram with Density Curve')
plt.legend(['Density Curve', 'Histogram'])
plt.show()

顾客的年龄主要分布在20-70岁之间。

5.3购物种类分析

# 购物种类分布
plt.figure(figsize = (10, 6))
c=data["Category"].value_counts()
bar=plt.bar(c.index,c.values,color=colors)
# 给图表填上数据
for bar in bar:
    plt.text(bar.get_x() + bar.get_width() / 2, bar.get_height(), str(int(bar.get_height())), ha='center', va='bottom')

plt.title('Category Distribution')
plt.show()

counts = data["Category"].value_counts()
explode = (0, 0.0, 0.1, 0.2)
counts.plot(kind = 'pie', fontsize = 12, colors = colors, explode = explode, autopct = '%1.1f%%')
plt.xlabel('Gender', weight = "bold", color = "#2F0F5D", fontsize = 14, labelpad = 20)
plt.axis('equal')
plt.legend(labels = counts.index, loc = "best")
plt.show()

# 不同性别在购物种类上的差异
plt.figure(figsize=(8, 3))
sns.countplot(data=data, x='Category', hue='Gender',palette='pastel')
plt.title('Product Category by Gender')
plt.xlabel('Product Category')
plt.ylabel('Count')
plt.legend(title='Gender', labels=data['Gender'].unique())
plt.show()

# 不同性别对具体商品购物情况
plt.figure(figsize=(22,5))
sns.countplot(data=data,x='Item Purchased',hue='Gender',palette='Set2')
plt.title('Item Purchased Distribution by Gender')
plt.show()

5.4产品型号分析 

# 不同产品型号的销售情况
count=data['Size'].value_counts()
plt.figure(figsize=(6,4))
bars=plt.bar(count.index,count.values,color=colors)
# 给图表填上数据
for bar in bars:
    plt.annotate(f'{bar.get_height()}', (bar.get_x() + bar.get_width() / 2., bar.get_height()), ha='center', va='center', fontsize=9, color='black', xytext=(0, 5), textcoords='offset points')
plt.show()

sns.countplot(data=data,x='Size' ,hue='Gender')
plt.show()

# 不同商品种类下各型号的销售情况
plt.figure(figsize=(15,5))
sns.countplot(data=data,x='Category' ,hue='Size')
plt.title('Category distribution by Gender')
plt.show()

plt.figure(figsize=(10,20))
sns.countplot(data=data,y='Item Purchased',hue='Size')
plt.ylabel('Item Purchased', fontsize=10)
plt.xlabel('\nNumber of Occurrences', fontsize=10)
plt.title('Item Purchased by Gender\n', fontsize=10)
plt.xticks(fontsize=10)
plt.tight_layout()
plt.show()

5.5其他分析

# 不同季节下的各商品种类销售情况
count=data['Season'].value_counts()
count.plot(kind='pie',colors=colors,fontsize=12,explode=(0,0.1,0,0.1),autopct='%1.1f%%')
plt.show()

# 各种类的用户评级
plt.figure(figsize=(20, 6))
sns.violinplot(x='Category', y='Review Rating', data=data)
plt.title('Review Rating by Category')
plt.xlabel('Category')
plt.ylabel('Review Rating')
plt.xticks(rotation=45,fontsize=12)
plt.show()

# 不同性别的评价等级分布
sns.kdeplot(data[data['Gender'] == 'Male']['Review Rating'], label='Male', shade=True)
sns.kdeplot(data[data['Gender'] == 'Female']['Review Rating'], label='Female', shade=True)
plt.title('KDE Plot of Review Rating by Gender')
plt.xlabel('Review Rating')
plt.ylabel('Density')
plt.legend()
plt.show()

plt.figure(figsize=(20, 5))
sns.kdeplot(data = data, x = 'Purchase Amount (USD)', hue = 'Season', common_norm = False, fill = True, palette = 'Set1')
plt.title('KDE Plot of Purchase Amount by Season')
plt.xlabel('Purchase Amount in USD')
plt.show()

6.总结

        通过本次实验,我们成功地利用数据可视化技术对顾客购物数据进行深入分析,提取了有价值的信息。这些信息可以帮助商家更好地了解市场和消费者行为,优化商业决策。例如,针对消费者的购买习惯周期性特点,商家可以在周末加强促销力度,提高销售额;针对不同地区的销售差异,商家可以制定个性化的销售策略,提高市场占有率;针对某品牌的销售上升趋势,商家可以进一步加大市场推广力度,扩大品牌影响力。

文末推荐与福利

《Python算法设计与分析从入门到精通》免费包邮送出3本!

内容简介:   

       本书是一本综合讲述算法和数据结构的入门书,以图解的方式全面介绍了当下比较实用的算法。全书分为4篇,共13章,包括算法入门、算法的描述、Python编程基础、排序算法、四大经典算法、其他算法、链表算法、树形结构算法、图形结构算法、查找算法、哈希表、使用算法解决常见数学问题、算法常见经典问题等。本书从用户学习与应用的角度出发,所有算法都结合具体生活实例进行讲解,涉及的程序代码给出了详细的注释,并且运用大量的示意图和实例应用,力求打造零压力的学习氛围,使读者轻松掌握各种主流算法,快速提高开发技能,拓宽职场道路。
        本书给出了大量的算法实例,所有实例都提供源码,本书的服务网站提供了模块库、案例库、题库、素材库、答疑服务。力求为读者提供一本“基础入门 应用开发 实战”一体化的Python算法图书。
        本书内容详尽,实例丰富,非常适合作为算法初学者的入门用书,也适合作为Python开发人员的案头随查手册;另外,对于从C 、C#、Java等编程语言转入的Python开发人员也有很大的参考价值。

编辑推荐:

《Python算法设计与分析从入门到精通》提供了从Python算法入门到成为算法设计高手所必需的各类知识。图书特点如下。
(1)主流算法,全面解析。本书从算法的基础讲起,通过各种有趣的实例、形象的讲解、丰富的图示,一点一滴地渗透Python算法逻辑和数据结构知识,后通过实例篇强化算法运用。
(2)择选经典算法,全程图解。算法世界浩瀚无边,且比较抽象。本书精心择选那些在程序设计、求职面试中出现频率较高的经典算法,非常具有代表性。同时,本书为算法实例绘制了多幅形象、生动的分步骤图示,全程图解,读者可快速领悟背后的算法设计逻辑。
(3)边学边练,学以致用。你得到的不仅仅是一本纸书,而是全套的学习资源。112个算法实例 136集Python零基础扫盲课,边学边练,在实践中提升技能。
(4)精彩栏目,贴心提醒。本书设置了很多“注意”“说明”“技巧”等小栏目,有利于读者在学习过程中更轻松地理解相关知识点及概念,并轻松地掌握个别技术的应用技巧。
(5)在线解答,高效学习。在线答疑QQ及技术支持网站,清大文森学堂不定期在线直播课程。

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

 名单公布时间:2023-10-24 21:00:00 

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

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

相关文章

今年阿里云双十一服务器优惠价格讨论_看看大家怎么说?

2023阿里云双十一云服务器大概会降到什么区间?阿里云服务器网认为会在当前的优惠价格基础上,降价10%左右,可以在阿里云CLUB中心领券:aliyun.club 云服务器专用满减优惠券。阿里云服务器网从各个渠道了解到大家对今年阿里云双十一服…

在用visualstudio连接数据库显示已存在以及此版本的SQLServer不支持用户实例登录解决

在写.NET实验时用visualstudio连接数据库显示”此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭“,我是开始在数据库已经导入了这个mbf文件的。然后就去网上找一堆办法。 失败经历: 按照教程操作后代码语句运行显示数据库已存在。按照网上的…

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章四: 文件管理

目录 文件管理 文件的逻辑结构 无结构文件 有结构文件 顺序文件 索引文件 索引顺序文件 文件目录 文件控制块(FCB) 目录结构分类 单级目录结构 两级目录结构 多级目录结构 (树形目录结构) 无环图目录结构 索引节点 文件的物理结构…

【经典PageRank 】02/2 算法和线性代数

系列前文:【经典 PageRank 】01/2 PageRank的基本原理-CSDN博客 一、说明 并非所有连接都同样重要! 该算法由 Sergey 和 Lawrence 开发,用于在 Google 搜索中对网页进行排名。基本原则是重要或值得信赖的网页更有可能链接到其他重要网页。例…

2023.10.21 关于 阻塞队列

目录 阻塞队列 优先级队列(Priority Queue) 阻塞队列(Blocking Queue) 消息队列(Message Queue) 生产者消费者模型 生产者消费者模型的两个好处 标准库阻塞队列使用 实现一个简单 生产者消费者模型…

【网络编程】基于epoll的ET模式下的Reactor

需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Reactor介绍 二、基于epoll的ET模式下的Reactor计算器代码 1、Tcp…

C++之构造函数、析构函数、拷贝构造函数终极指南:玩转对象的诞生、生命周期与复制

W...Y的主页 代码片段分享 前言&#xff1a; 在上篇内容里&#xff0c;我们初识了C中的类与对象&#xff0c;了解了类的定义、类的实例化、 类的作用域等等&#xff0c;今天我们将继续深入了解类与对象的相关内容&#xff0c;学习构造函数、析构函数与拷贝构造函数&#xff…

WebGL笔记:图形转面的原理与实现

1 &#xff09;回顾 WebGL 三种面的适应场景 TRIANGLES 单独三角形TRIANGLE_STRIP 三角带TRIANGLE_FAN 三角扇备注 在实际的引擎开发中&#xff0c;TRIANGLES 是用得最多的TRIANGLES 的优势是可以绘制任意模型&#xff0c;缺点是比较费点 2 &#xff09;适合 TRIANGLES 单独…

Apache JMeter 安装教程

下载&#xff1a; 注意事项&#xff1a;使用JMeter前需要配置JDK环境 下载地址 下载安装以后&#xff0c;打开安装的bin目录 D:\software\apache-jmeter-5.4.1\apache-jmeter-5.4.1\bin&#xff0c;找到jmeter.bat&#xff0c;双击打开 打开后的样子 语言设置&#xff1a; 1…

windows模拟触摸

安装EcoTUIODriver驱动 GitHub - almighty-bungholio/EcoTUIODriver: Diver to convert tuio touch events into windows touch events. Started as GSoC 2012 project. 安装完后电脑属性显示笔和触控为为20点触摸点提供笔和触控支持。 在另一台电脑上运行tuio模块器是一个ja…

【iOS】JSON解析

JSON在Web开发和网络通信和传输中广泛应用&#xff0c;常用于存储和传输数据&#xff0c;这些数据一般也都是JSON格式&#xff0c;可以说绝大多数网络请求传输的数据都是JSON格式 在之前有关网络请求文章中&#xff0c;实现了网络数据加载流程&#xff0c;并对加载下来的JSON数…

Es集群部署

目录 组件全家套 版本说明 主机准备 1.解压安装 2.运行环境配置 2.1修改每个节点linux系统限制 2.2 修改每个节点 linux 系统配置 2.3 调整vm.max_map_count的大小 2.4 重启验证配置 3. 配置ES 3.1 每个节点创建ES用户&#xff0c;ES不能使用root启动 3.2 每个节点…

ELK概述部署和Filebeat 分布式日志管理平台部署

ELK概述部署、Filebeat 分布式日志管理平台部署 一、ELK 简介二、ELK部署2.1、部署准备2.2、优化elasticsearch用户拥有的内存权限2.3、启动elasticsearch是否成功开启2.4、浏览器查看节点信息2.5、安装 Elasticsearch-head 插件2.6、ELK Logstash 部署&#xff08;在 Apache 节…

数据库的基本知识理论

文章目录 一、数据库的演变史1.存取数据的演变史1.把数据存在了文件中2.存数据的文件越来越多&#xff0c;放在db文件夹3.数据库软件就能够解决以上所有问题 2.数据库软件应用史1.单机游戏2.网络游戏3. 集群 二、数据库1.什么是数据库2.数据库的作用1.实现数据共享2.减少数据的…

【Android知识笔记】Webview专题

WebView 核心组件 类名作用常用方法WebView创建对象加载URL生命周期管理状态管理loadUrl():加载网页 goBack():后退WebSettings配置&管理 WebView缓存:setCacheMode() 与JS交互:setJavaScriptEnabled()WebViewClient处理各种通知&请求事件should

系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第三部分:缓存

本心、输入输出、结果 文章目录 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第三部分&#xff1a;缓存前言缓存数据存储在什么地方图层说明 为什么 Redis 这么快&#xff1f;如何使用 Redis顶级缓存策略弘扬爱国精神 系统设计 - 我们如何通俗的理解那些技术的运行原理…

嵌入式硬件中常见的100种硬件选型方式

1请列举您知道的电阻、电容、电感品牌&#xff08;最好包括国内、国外品牌&#xff09;。 电阻&#xff1a; 美国&#xff1a;AVX、VISHAY 威世 日本&#xff1a;KOA 兴亚、Kyocera 京瓷、muRata 村田、Panasonic 松下、ROHM 罗姆、susumu、TDK 台湾&#xff1a;LIZ 丽智、PHY…

SystemVerilog学习(4)——自定义结构

一、 通过typedef来创建用户自定义类型 typedef语句可以用来创建新的类型。例如,你要求一个算术逻辑单元(ALU)在编译时可配置,以适应8比特、16比特,24比特或32比特等不同位宽的操作数。在Verilog中,你可以为操作数的位宽和类型分别定义一个宏(macro),如例2.32所示。 SV则提供了…

Linux常用命令——clockdiff命令

在线Linux命令查询工具 clockdiff 检测两台linux主机的时间差 补充说明 在ip报文的首部和ICMP报文的首部都可以放入时间戳数据。clockdiff程序正是使用时间戳来测算目的主机和本地主机的系统时间差。 选项 -o&#xff1a;使用IP时间戳选项来测量系统时间差。时间戳只用3个…

超全全国所有城市人力资本测算数据集(1990-2021年)

参考《管理世界》中詹新宇&#xff08;2020&#xff09;的做法&#xff0c;本文对地级市的人力资本水平进行测算&#xff0c;其中人力资本水平用地级市的普通高等学校在校学生数占该地区总人口比重来反映 一、数据介绍 数据名称&#xff1a;地级市-人力资本测算 数据年份&…