数据分析案例-顾客购物数据可视化分析

简介: 数据分析案例-顾客购物数据可视化分析

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.总结


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


目录
相关文章
|
25天前
|
数据可视化 数据挖掘 API
Python数据分析中的数据可视化:Matplotlib与Seaborn的比较
在Python数据分析领域,数据可视化是至关重要的一环。本文将深入探讨两大流行的数据可视化库Matplotlib与Seaborn的异同,帮助读者更好地选择适合自身需求的工具。
|
1月前
|
机器学习/深度学习 数据可视化 算法
python数据分析——在面对各种问题时,因如何做分析的分类汇总
Python数据分析是指使用Python编程语言对数据进行收集、处理、分析和可视化的过程。Python是一种非常流行的编程语言,具有简单易学、代码可读性高、生态系统强大的特点,因此在数据科学领域得到广泛应用。
77 0
|
1月前
|
数据采集 存储 数据可视化
python数据分析——数据可视化(图形绘制基础)
为了绘制好数据可视化图形,需要掌握数据分析的基础知识,例如数据类型、数据预处理、统计方法等。同时,还需要了解绘图工具的使用,例如Excel、Tableau、Python中的Matplotlib和Seaborn等。掌握数据可视化的基础知识和工具,可以帮助我们更好地理解数据和数据之间的关系,从而做出更加准确的决策和预测。
74 1
|
1月前
|
监控 搜索推荐 数据挖掘
python数据分析——业务指标分析
业务指标分析是企业运营中不可或缺的一环,通过对各项关键指标的深入剖析,我们能够更好地了解企业的运营状况,发现潜在问题,进而制定相应的策略来优化业务流程、提升经营效率。 在业务指标分析中,我们首先要明确分析的目的和范围。是为了评估整体业务健康状况,还是针对某一具体环节进行优化?明确了目的后,我们需要收集相关的数据,这些数据可能来源于不同的业务系统和数据库,因此数据的整合和清洗也是分析过程中的重要步骤。 接下来,我们要选择合适的分析方法。比如,对于销售数据,我们可以采用时间序列分析来观察销售趋势;对于用户行为数据,我们可以使用用户画像和路径分析来洞察用户需求和行为习惯。
98 1
|
2月前
|
数据可视化 数据挖掘 大数据
Python数据分析中的数据可视化技术应用
数据可视化是数据分析中至关重要的一环,能够帮助分析师和决策者更直观地理解数据。本文将介绍Python数据分析中常用的数据可视化技术,包括Matplotlib、Seaborn和Plotly,并结合实际案例演示它们在数据分析中的应用。
|
2月前
|
数据挖掘 数据库
GEE——降水数据分析(半天)图表分析含(IANA(IANA Time Zone Database) 时区名称的定义)
GEE——降水数据分析(半天)图表分析含(IANA(IANA Time Zone Database) 时区名称的定义)
29 1
|
2月前
|
数据可视化 数据挖掘 BI
数据分析案例-某公司员工数据信息可视化
数据分析案例-某公司员工数据信息可视化
50 2
|
8天前
|
人工智能 数据可视化 数据挖掘
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
|
13天前
|
存储 数据挖掘 数据库
【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】
【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】
|
24天前
|
数据可视化 数据挖掘 Python
python数据分析和可视化【3】体检数据分析和小费数据分析
python数据分析和可视化【3】体检数据分析和小费数据分析
32 0