基于Python的顾客购物数据可视化分析

数据可视化分析实验

数据集简介

        本文在实验中考虑到实验使用设备的性能和环境的局限性,采用了kaggle官网上的的消费者购物数据集数据地址:

https://www.kaggle.com/datasets/iamsouravbanerjee/customer-shopping-trends-dataset。

此数据包含了3900条记录,每条记录由18个特征变量组成,具体变量解释如下图所示:

 实验环境搭建

        本文实验主要涉及到顾客购物数据可视化的开发,在采用实验的方式,实验采用的电脑设备为Windows操作系统。实验环境采用了 Pyhton 编程语言以及相关的机器学习框架,实验平台为conda 23.7.4相关系数如表所示:

表3-1实验环境的相关系数

设备

电脑 配置参数

操作系统

Windows

内存

16G

CPU型号

Intel(R) Core(TM) i5-10200H CPU @ 2.40GHz

GPU型号

NVIDIA GeForce GTX 1650

硬盘

系统盘:512 GB

机械硬盘:1T

开发语言

Python 3.9.19

实验平台

conda 23.7.4

可视化分析实验设计

顾客购物数据读取        

      导入实验使用所需包,从kaggle官网上下载实验所需数据保存在shopping_trends_updated.csv文件中,通过pandas库进行读取,并显示前5行数据。

import numpy as np
import pandas as pd 
import os
import matplotlib.pyplot as plt
import seaborn as sns
# 导入数据
data = pd.read_csv(r'C:\Users\leglon\Desktop\购物习惯\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))*100sum['#unique']=data.nunique().valuesdesc=pd.DataFrame(data.describe(include="all").transpose())sum['min']=desc['min'].valuessum['max']=desc['max'].valuessum['first value']=data.loc[0].valuessum['second value']=data.loc[1].valuessum['Third value']=data.loc[2].valuesreturn sum
summary(data)

        从图中可以看到此数据集有3900条数据,每条数据有18个特征类型,对特征信息进行输出,如图所示:

data.info()

        对数据进行预处理,去除或修正数据中的错误、缺失值和噪音,以确保数据的准确性和一致性。对实验数据进行查找是否有缺失值。

#查找缺失值
print(data.isnull().sum()) # 查看缺失值

从输出结果来看,此数据完好,没有任何缺失值。

性别数据可视化分析

        对数据中的男女比例进行可视化展示,以帮助商家快速了解客户群体的性别构成。

#查看男女比例,画出柱状图
import matplotlib.pyplot as plt# 统计男女比例
gender_counts = data['Gender'].value_counts()# 打印男女比例
print(gender_counts)
# 绘制柱状图
plt.figure(figsize=(8, 6))
plt.bar(gender_counts.index, gender_counts.values, color=['blue', 'pink'])
plt.xlabel('Gender')
plt.ylabel('Count')
plt.title('Gender Distribution')
plt.xticks(rotation=0)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()

        对男女消费比例进行聚类分析,了解不同性别顾客的消费偏好和行为模式,进购出更符合不同性别顾客需求的产品,提升产品的市场竞争力。

# 统计男女比例
gender_counts = data['Gender'].value_counts()
#聚类分析
data['Gender_encoded'] = data['Gender'].map({'Male': 0, 'Female': 1}) # 数据变换with pd.option_context('mode.use_inf_as_na', True):sns.pairplot(data.loc[:,~data.columns.isin(['CustomerID','Gender'])],diag_kind="kde")

购物可视化

        对购物种类的可视化,可以直观地看到哪些商品类别在特定时间段内更受欢迎。这有助于识别市场的消费趋势和热点,帮助商家抓住市场机会。

# 绘制购物占比
counts = data["Category"].value_counts()
colors = plt.cm.Paired(range(len(counts)))
explode = [0.1 if i == counts.values.argmax() else 0 for i in range(len(counts))]
plt.figure(figsize=(10, 8))# 绘制饼图
counts.plot(kind='pie', fontsize=12, colors=colors, explode=explode, autopct='%1.1f%%', startangle=140, shadow=True)
plt.title('Category Distribution', fontsize=16, weight='bold', color='#2F0F5D')# 显示图例
plt.legend(labels=counts.index, loc="best")# 保持饼图为圆形
plt.axis('equal')
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, 8))
sns.countplot(data=data, x='Item Purchased', hue='Gender', palette='Set2')
plt.title('Item Purchased Distribution by Gender', fontsize=18, weight='bold')
plt.xlabel('Item Purchased', fontsize=14)
plt.ylabel('Count', fontsize=14)
plt.legend(title='Gender', title_fontsize='13', fontsize='12')
plt.xticks(rotation=45, ha='right')
plt.show()

 销售情况可视化

1不同尺码销售情况

        销售情况可视化展示销售数据可以帮助识别销售趋势,包括季节性变化、长期增长或下降趋势。通过图表,如折线图或面积图,可以清晰地看到销售额随时间的变化,从而制定相应的策略。在本文的数据中,不同尺码的消费情况如图所示:

#对不同型号产品进行分析
# 获取产品型号的销售情况
count = data['Size'].value_counts()
colors = plt.cm.Paired(range(len(count)))
plt.figure(figsize=(8, 8))
plt.pie(count.values, labels=count.index, colors=colors, autopct='%1.1f%%', startangle=140, shadow=True)
plt.title('Sales by Product Size', fontsize=16, weight='bold')
plt.axis('equal')  
plt.show()

2不同性别的销售情况

        不同性别在不同型号上的购物情况可视化,展示了不同性别客户对产品尺寸的偏好,可以帮助商家更好地了解客户需求。

#不同性别在不同型号上的购物情况
plt.figure(figsize=(12, 6))
sns.countplot(data=data, x='Size', hue='Gender', palette='Set2')
plt.title('Shopping Distribution by Product Size and Gender', fontsize=16, weight='bold')
plt.xlabel('Product Size', fontsize=14)
plt.ylabel('Count', fontsize=14)
plt.legend(title='Gender', title_fontsize='13', fontsize='12')
plt.xticks(rotation=45, ha='right')
plt.show()

同商品种类下各型号的销售情况

        通过分析和可视化展示不同商品种类下各型号的销售情况,可以识别出销售模式和趋势。

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

不同季节下的各商品种类销售情况

# 不同季节下的各商品种类销售情况
count = data['Season'].value_counts()
colors = plt.cm.Paired(range(len(count)))
plt.figure(figsize=(10, 8))
count.plot(kind='pie', colors=colors, fontsize=12, explode=(0, 0.1, 0, 0.1), autopct='%1.1f%%', startangle=140, shadow=True)
plt.title('Sales Distribution by Season', fontsize=16, weight='bold')
plt.legend(labels=count.index, loc="best", fontsize=12)
plt.axis('equal')
plt.show()

不同年龄段的购物可视化

# 获取年龄分布数据并按年龄段进行分组
age_bins = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
age_labels = ['0-10', '11-20', '21-30', '31-40', '41-50', '51-60', '61-70', '71-80', '81-90', '91-100']
data['AgeGroup'] = pd.cut(data['Age'], bins=age_bins, labels=age_labels, right=False)
age_group_counts = data['AgeGroup'].value_counts().sort_index()
colors = plt.cm.Paired(range(len(age_group_counts)))
plt.figure(figsize=(10, 8))
age_group_counts.plot(kind='pie', colors=colors, autopct='%1.1f%%', startangle=140, shadow=True)
plt.title('Age Group Distribution', fontsize=16, weight='bold')
plt.legend(labels=age_group_counts.index, loc="best", fontsize=12)
plt.axis('equal')
plt.show()

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

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

相关文章

Stable Diffusion AI绘画工具的安装与配置(MAC用户)

AI绘画的热潮席卷了整个创意行业,Stable Diffusion作为其中的翘楚,让艺术创作变得前所未有的简单。然而,对于使用Mac电脑用户来说,安装和配置Stable Diffusion可能显得有些棘手。别担心,这份详细的教程将手把手教你如何…

多功能秒达工具箱全开源源码,可自部署且完全开源的中文工具箱

简介: 多功能秒达开源工具箱源码,,可自部署且完全开源的中文工具箱,永远的自由软件,轻量级运行,全平台支持(包括ARMv8),完全类似 GPT 的支持,与高效的 UI 高…

【Java】—— Java面向对象基础:编程实例(学生信息管理)

目录 场景描述 定义学生类 创建学生对象并处理需求 代码解析 总结 在Java中,面向对象编程(OOP)是一种常用的编程范式,它允许我们创建基于现实世界的模型,通过类和对象来模拟这些模型。今天,我们将通过…

刘海屏的优雅回归?华为Mate 70 Pro定义新美学

在智能手机的发展历程中,华为Mate系列一直是高端旗舰的代表。而今,华为Mate 70 Pro的神秘面纱终于揭开,其回归的刘海屏设计和独特的寰宇舷窗设计,再次将华为的设计理念推向了新的高度。 刘海屏的回归:经典与创新的融合…

后端微服务与分布式系统

编写一篇关于后端微服务和分布式系统的文档,需要详细讨论微服务架构的核心概念、优缺点、关键技术,以及在分布式系统中的应用。以下是文档的大纲和内容概述: 后端微服务与分布式系统 1. 简介 微服务架构是一种将大型应用程序分解为一系列小…

【AI绘画】Midjourney前置/imagine与单图指令详解

文章目录 💯Midjourney前置指令/imagine什么是前置指令?/imaginepromptUpscale(放大)Variations(变化)🔄(重新生成一组图片) 💯单张图片指令Upscale (细节优化)Vary(变体…

COMSOL工业碱性电解槽(3D、双欧拉模型)

本案例通过改写COMSOL官方案例获得,使用了碱性电解槽和欧拉-欧拉(湍流)模型,阳极室和阴极室带有乳突状的结构,模型进行了人为缩小,仅供参考。其中一些参数可参考如下链接文章的说明。COMSOL碱性电解槽参数解…

public继承

三种继承的方法:public 继承/private继承/protected继承详解及区别_public继承-CSDN博客 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被基类的子类所访问。 错误…

关键点检测——HRNet原理详解篇

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊专栏推荐:深度学习网络原理与实战 🍊近期目标:写好专栏的每一篇文章 🍊支持小苏:点赞👍🏼、…

Windows上安装 nodejs,npm 和 yarn详细教程

1、下载Node.js 访问Node.js 官网下载,下载需要版本版本,具体操作如下 2、安装Node.js 具体安装可参考以下知乎教程 https://www.zhihu.com/question/591831850/answer/3423661990 3、配置淘宝镜像 npm config set registry https://registry.npmmirror…

UWB Tag钥匙防丢器,精准定位测距,一键找回!告别钥匙遗失焦虑

在这个快节奏的时代,我们每天穿梭于家、办公室、商场之间,手中的钥匙串仿佛成了连接生活各个角落的纽带。但你是否也曾有过这样的经历:匆忙间,那串沉甸甸的钥匙似乎在某个不经意的瞬间与你“不辞而别”,留下的是无尽的…

如何将本地jar包导入到maven仓库中

需要将本地的 JAR 包安装到你的本地 Maven 仓库中,可以使用 mvn install:install-file 命令来完成这一步。 1.打开终端或命令行 2.运行以下命令,将 JAR 文件安装到本地 Maven 仓库: mvn install:install-file -Dfilepath/to/your/com.magu…

APP.vue引入子组件进行页面展示

一.将vue项目启动服务器原始页面进行清空 打开APP.vue文件&#xff0c;将<template>标签里的内容和<style>标签里的内容 ctrl/ 选中进行注释&#xff0c;以及引入的Helloworld.vue文件内容代码进行注释 并且 ctrls 保存 服务器页面从原始页面 变为空白 二.在comp…

基于微信小程序的行李寄存管理系统的设计与实现(论文+源码)_kaic

基于微信小程序的行李寄存管理系统的设计与实现(论文源码)_kaic 摘 要 人们外出旅行的时候&#xff0c;经常会需要到行李寄存的服务。行李寄存处在全国各地都很常见。现存的行李寄存方式很传统&#xff0c;适合小规模的行李寄存&#xff0c;当行李数量较多时&#xff0c;就…

ssrf+redis未授权访问漏洞复现

目录 靶场搭建 报错问题解决 组合利用 使用goherus生成payload 靶场搭建 首先我们进入ubutuo拉取靶场 docker run -d -p 8765:80 8023/pikachu-expect:latest 报错问题解决 如果出现docker报错&#xff0c;靶场一直拉取不下来 解决办法&#xff1a;配置镜像加速器 vim /et…

Linux简单介绍(2)

四、软件管理机制 4.1 Linux软件管理介绍 有一个很好的软件生态圈支持&#xff0c;才是一个优秀、值得广泛使用的操作系统平台。比如PC端的window操作系统、mac操作系统&#xff0c;手机端的IOS系统&#xff0c;Android系统等。在这些操作系统上安装软件&#xff0c;方便的不能…

Golang测试func TestXX(t *testing.T)的使用

一般Golang中的测试代码都以xxx_test.go的样式&#xff0c;在命名测试函数的时候以Testxx开头。 以下是我写的一个单元&#xff1a; package testsimport "strings"func Split(s, sep string) (res []string) {i : strings.Index(s, sep)for i > -1 {res append…

Furion+SqlSugar环境配置与项目创建

一、速通一图流 二、安装 .NET 8 1. 下载与安装 .NET 8 SDK 访问 .NET 下载页面 并下载最新版本的 .NET 8 SDK。根据操作系统选择适合的安装包&#xff08;如 Windows、macOS 或 Linux&#xff09;&#xff0c;并按照提示完成安装。 2. 验证安装 打开终端或命令提示符&…

探索Python数据世界的秘密武器:xlrd库

文章目录 探索Python数据世界的秘密武器&#xff1a;xlrd库背景&#xff1a;为什么选择xlrd&#xff1f;库简介&#xff1a;xlrd是什么&#xff1f;安装指南&#xff1a;如何安装xlrd&#xff1f;快速上手&#xff1a;常用函数介绍实战演练&#xff1a;应用场景常见问题与解决方…

从web.xml动态读取sunspringmvc.xml文件

文章目录 1.问题分析1.SunWebApplicationContext.java 中sunspringmvc.xml是写死的2.但是web.xml已经配置了init-param&#xff0c;所以应该是可以读取的 2.具体实现1.SunDispatcherServlet.java 得到ServletConfig传递给Spring容器完成初始化2.SunWebApplicationContext.java …