一、引言

该数据集发布于2025年10月2日,聚焦客户购物行为,涵盖客户人口统计(年龄、性别、位置)、购买详情(所购商品、类别、尺寸、颜色、季节、购买金额)、客户参与度(订阅状态、评分、折扣、优惠码)及交易详情(配送类型、支付方式、购买频率、历史购买记录)等核心信息,可用性评分达10.00,采用ODC公共领域贡献与许可协议(PDDL) ,可应用于客户细分与画像、购物行为分析、预测建模(如购买金额或频率)、推荐系统构建、营销及折扣策略优化等场景。

下载地址1:https://pan.quark.cn/s/58fd20be3878
下载地址2: https://pan.baidu.com/s/1kT445Yi5CL8hW2XGWkayzQ?pwd=j7rn 提取码: j7rn

数据集基础信息

信息类别 具体内容 关键说明
可用性评分 10.00 满分评分,表明数据集在完整性、易用性、准确性等方面表现优异
许可协议 ODC Public Domain Dedication and Licence(PDDL) 公共领域协议,允许用户自由使用、分享、修改数据,无版权限制
预期更新频率 Never(无) 数据集为静态数据,后续不会进行定期或不定期更新
数据文件信息 文件名:shopping_behavior_updated.csv;文件大小:416.61 kB 小体积文件,便于快速加载和初步分析,降低存储与计算成本
关联标签/工具 Data Analytics(数据分析)pandas 提示数据集的核心应用领域,及常用的数据分析工具

在这里插入图片描述

二、数据概述

import pandas as pd
# 加载数据
data = pd.read_csv('/shopping_behavior_updated.csv')
print('数据基本信息:')
data.info()
# 查看数据集行数和列数
rows, columns = data.shape
if rows < 100 and columns < 20:
    # 短表数据(行数少于100且列数少于20)查看全量数据信息
    print('数据全部内容信息:')
    print(data.to_csv(sep='\t', na_rep='nan'))
else:
    # 长表数据查看数据前几行信息
    print('数据前几行内容信息:')
    print(data.head().to_csv(sep='\t', na_rep='nan'))

2.1 数据规模

该数据集包含 3900 条记录,涵盖了 18 个与客户购物行为相关的字段。

2.2 字段说明

字段名 含义 数据类型
Customer ID 客户编号 int64
Age 客户年龄 int64
Gender 客户性别 object
Item Purchased 购买的商品 object
Category 商品类别 object
Purchase Amount (USD) 购买金额(美元) int64
Location 购买地点 object
Size 商品尺寸 object
Color 商品颜色 object
Season 购买季节 object
Review Rating 客户评价评分 float64
Subscription Status 订阅状态 object
Shipping Type 配送方式 object
Discount Applied 是否使用折扣 object
Promo Code Used 是否使用促销码 object
Previous Purchases 过往购买次数 int64
Payment Method 支付方式 object
Frequency of Purchases 购买频率 object

三、客户人口统计特征分析

3.1 年龄分布

import matplotlib.pyplot as plt

# 查看年龄分布,并保留两位小数
age_distribution = data['Age'].describe().round(2)

# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei']

# 绘制年龄分布直方图
plt.hist(data['Age'], bins=20, edgecolor='black')
plt.xlabel('年龄')
plt.xticks(rotation=45)
plt.ylabel('数量')
plt.title('客户年龄分布直方图')

plt.show()
print('客户年龄分布:', age_distribution)
3.1.1 年龄分布统计数据
统计量 说明
count 3900.00 参与统计的客户数量为 3900 人
mean 44.07 客户的平均年龄约为 44.07 岁,反映了整体客户年龄的平均水平
std 15.21 年龄的标准差为 15.21,说明客户年龄相对较为分散
min 18.00 最小年龄为 18 岁,表明有年轻客户群体参与购物
25% 31.00 四分之一的客户年龄在 31 岁及以下
50% 44.00 一半的客户年龄在 44 岁及以下,即中位数为 44 岁
75% 57.00 四分之三的客户年龄在 57 岁及以下
max 70.00 最大年龄为 70 岁,说明老年客户也有一定的购物行为

从这些数据可以推测,该购物群体的年龄覆盖范围较广,从 18 岁到 70 岁都有涉及。平均年龄和中位数接近,说明年龄分布大致呈对称状,但标准差显示年龄数据存在一定的离散性。企业可以根据这个年龄分布特点,针对不同年龄段制定不同的营销策略。

3.1.2 年龄分布直方图

该直方图直观地展示了客户年龄的分布情况。通过直方图,我们可以更清晰地看到不同年龄段客户的数量分布,进一步分析出哪个年龄段的客户是主要购物群体,从而有针对性地进行商品推荐和营销活动策划。

3.2 性别分布

# 查看性别分布
gender_distribution = data['Gender'].value_counts()
# 绘制性别分布饼图
plt.pie(gender_distribution, labels=gender_distribution.index, autopct='%1.1f%%')
plt.title('客户性别分布饼图')
plt.show()
print('客户性别分布:', gender_distribution)

3.2 性别分布

3.2.1 性别分布统计数据
性别 数量
Male 2652
Female 1248

从数据中可以看出,男性客户数量(2652 人)明显多于女性客户数量(1248 人)。这可能反映出该购物平台或业务的商品或服务更受男性青睐,或者在市场推广方面对男性群体的覆盖更为有效。企业可以进一步分析男性客户的购物偏好,加大对男性客户感兴趣商品的推广力度,同时思考如何吸引更多女性客户,例如针对女性客户开展专属的营销活动。

3.2.2 性别分布饼图

该饼图直观地展示了男性和女性客户在总体客户中的占比情况。通过饼图可以更清晰地对比两者的比例关系,有助于企业在制定营销策略、规划商品种类等方面做出决策。例如,根据男女客户的占比合理分配广告投放资源,或者调整商品库存结构以更好地满足不同性别客户的需求。

四、购买行为分析

4.1 购买金额分布

# 查看购买金额分布,并保留两位小数
purchase_amount_distribution = data['Purchase Amount (USD)'].describe().round(2)

# 绘制购买金额分布直方图
plt.hist(data['Purchase Amount (USD)'], bins=20, edgecolor='black')
plt.xlabel('购买金额(美元)')
plt.xticks(rotation=45)
plt.ylabel('数量')
plt.title('购买金额分布直方图')

plt.show()

print('购买金额分布:', purchase_amount_distribution)

4.1 购买金额分布

4.1.1 购买金额的统计描述
统计量 含义
count 3900.00 表示参与统计的购买记录数量为 3900 条。这说明数据量较为充足,能够相对准确地反映购买金额的整体情况。
mean 59.76 平均每次购买金额约为 59.76 美元,可作为衡量客户平均消费能力的一个参考指标。
std 23.69 标准差为 23.69,表明购买金额存在一定的离散程度,客户的购买金额波动相对较大。
min 20.00 最小购买金额为 20 美元,这可能是该平台或业务的最低消费门槛,或者反映了一些低价商品的购买情况。
25% 39.00 有 25% 的购买金额在 39 美元及以下,这是下四分位数,可用于划分低消费群体。
50% 60.00 中位数为 60 美元,意味着一半的购买金额在 60 美元及以下,另一半在 60 美元以上。它比平均数略高,可能暗示数据分布有一定的右偏。
75% 81.00 有 75% 的购买金额在 81 美元及以下,这是上四分位数,可用于划分高消费群体。
max 100.00 最大购买金额为 100 美元,这可能是该平台或业务的消费上限,或者是某些特殊商品或套餐的价格。

综合来看,企业可以根据这些统计数据制定不同的营销策略。例如,针对低消费群体(购买金额在 39 美元及以下)推出一些低价促销活动;对于高消费群体(购买金额在 81 美元及以上)提供更优质的服务和个性化的推荐。

4.1.2 购买金额分布直方图

从直方图中可以直观地看到购买金额的分布频率。通过观察直方图的形状,可以进一步确认购买金额是否存在偏态分布等情况。如果直方图呈现右偏态,说明有少数客户的购买金额较高,拉高了整体的平均购买金额。企业可以针对这些高消费的少数客户进行重点维护和营销,以提高他们的忠诚度和消费频次。

4.2 不同商品类别的购买情况

# 查看不同商品类别的购买数量
category_purchase_count = data['Category'].value_counts()
# 查看不同商品类别的购买金额
category_purchase_amount = data.groupby('Category')['Purchase Amount (USD)'].sum()

# 创建两个图像
fig, axs = plt.subplots(2)
# 绘制不同商品类别的购买数量柱状图
axs[0].bar(category_purchase_count.index, category_purchase_count)
axs[0].set_xlabel('商品类别')
axs[0].set_ylabel('购买数量')
axs[0].set_title('不同商品类别的购买数量柱状图')
axs[0].tick_params(axis='x', rotation=90)

# 添加购买数量数据标签
for i, v in enumerate(category_purchase_count):
    axs[0].text(i, v + 1, str(v), ha='center')

# 绘制不同商品类别的购买金额柱状图
axs[1].bar(category_purchase_amount.index, category_purchase_amount)
axs[1].set_xlabel('商品类别')
axs[1].set_ylabel('购买金额(美元)')
axs[1].set_title('不同商品类别的购买金额柱状图')
axs[1].tick_params(axis='x', rotation=90)

# 添加购买金额数据标签
for i, v in enumerate(category_purchase_amount):
    axs[1].text(i, v + 10, str(round(v, 2)), ha='center')

plt.tight_layout()
plt.show()

print('不同商品类别的购买数量:', category_purchase_count)
print('不同商品类别的购买金额:', category_purchase_amount.round(2))

4.2 不同商品类别的购买情况

4.2.1 不同商品类别的购买数量
商品类别 购买数量
Clothing 1737
Accessories 1240
Footwear 599
Outerwear 324

从购买数量来看,“Clothing”(服装)类商品的购买数量最多,这可能表明该类商品在消费者中有较高的需求,也许是因为服装属于日常必需品,更新换代频率较高。而“Outerwear”(外套)类商品的购买数量最少,推测可能是因为外套相对价格较高、使用周期较长,消费者购买的频次较低。

4.2.2 不同商品类别的购买金额
商品类别 购买金额(美元)
Accessories 74200
Clothing 104264
Footwear 36093
Outerwear 18524

在购买金额方面,“Clothing”(服装)类商品同样占据首位,这不仅是因为其购买数量多,还可能意味着该类商品的平均单价也有一定水平。“Accessories”(配饰)类商品虽然购买数量不如“Footwear”(鞋类),但购买金额却更高,这可能说明配饰类商品的平均单价较高。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐