首页 > 编程语言 >基于Python的顾客购物数据可视化分析

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

时间:2024-08-31 22:24:04浏览次数:12  
标签:plt Python Gender 购物 可视化 fontsize counts data

数据可视化分析实验

数据集简介

        本文在实验中考虑到实验使用设备的性能和环境的局限性,采用了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))*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个特征类型,对特征信息进行输出,如图所示:

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()

标签:plt,Python,Gender,购物,可视化,fontsize,counts,data
From: https://blog.csdn.net/qq_62127918/article/details/141330116

相关文章

  • # yyds干货盘点 # 盘点一个Python正则表达式问题
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【大锤子】问了一个Python正则表达式处理的问题,这里拿出来给大家分享下。下图是代码:二、实现过程这个问题确看上去是正则表达式的问题,这里【杯酒】提出问题并给出建议:使用+号,就能匹配所有符合条件的文字,而不是第一段。不过后......
  • python和c语言有什么不同
    1、语言类型Python是一种基于解释器的语言,解释器会逐行读取代码;首先将Python编译为字节码,然后由大型C程序解释。C是一种编译语言,完整的源代码将直接编译为机器代码,由CPU直接执行。2、内存管理Python使用自动垃圾收集器进行内存管理。在C语言中,程序员必须自己进行内存管......
  • python浮点数怎么写
    python提供了三种浮点值:内置的float与complex类型,以及标准库的decimal.Decimal类型。float类型存放双精度的浮点数,具体取值范围依赖于构建python的c编译器,由于精度受限,进行相等性比较不可靠。如果需要高精度,可使用decimal模块的decimal.Decimal,这种类型可以准确的表示循环......
  • 【数模资料包】最新数模国赛word+latex模版|数模常用的算法python+matlab代码
     【2024最全国赛研赛数模资料包】C君珍贵国一数模资料|最新数模国赛word+latex模版|数模常用的算法python+matlab代码国赛指:高教社杯全国大学生数学建模竞赛,研赛指:华为杯研究生数学建模竞赛。资料内容具体看文末卡片以下是三个相关的资料内容:1C君珍贵国一数模资料2最......
  • Python将HTML转MD
    1.下载hteml2text模块2.代码importosimporthtml2textinput_folder="C:\\Users\\jude\\Desktop\\res\\cnblogs_blog_judes.20240831122513\\judes"#输入文件夹路径output_folder="C:\\Users\\jude\\Desktop\\res\\cnblogs_blog_judes.......
  • 搭建一个简单的购物车应用
    欢迎大家订阅【Vue2+Vue3】入门到实践专栏,开启你的Vue学习之旅!文章目录前言一、渲染功能二、删除功能三、修改功能四、全选反选五、统计价格及数量六、完整代码前言本篇文章详细讲解了如何搭建一个简单的购物车应用,展示了购物车的基本功能,包括商品列......
  • python+flask计算机毕业设计关于机械电子论坛的网站设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,机械电子领域作为现代工业的核心支柱之一,其技术更新换代速度日益加快。在这个背景下,行业内的专业技术人员、学者及......
  • python+flask计算机毕业设计超市积分管理与分析系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着零售行业的快速发展与消费者需求的日益多样化,超市作为传统零售业态的重要组成部分,面临着提升顾客忠诚度、增强市场竞争力的重要挑战。......
  • python+flask计算机毕业设计毕业生闲置物品流通系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的普及,每年有数以百万计的毕业生走出校园,步入社会。在这一过程中,大量个人物品如书籍、电子产品、生活用品等因不再使用而面临......
  • Python中的元组:解锁数据安全与效率的秘密武器
    引言元组,一种有序的数据集合,它允许我们存储多个项作为一个单一的实体。与列表相比,元组最显著的特点就是其不可变性——一旦创建,就不能修改。这一特性使得元组非常适合用于那些需要固定不变的数据集合场景,如配置信息、日期时间等。此外,由于元组的不可变性,Python能够在内存管理上做......