深入探索客户购物偏好的宝贵数据集,为企业揭示消费者行为的秘密。本数据集涵盖了消费者的年龄、性别、购买历史、首选支付方式及购买频率等多维度信息,是分析客户行为的关键。经过严格的数据清洗和验证,确保了数据的准确性和可靠性,为企业的决策提供坚实基础。此数据集不仅揭示了客户的真实需求和偏好,还为企业在产品定制、市场细分和精准营销等方面提供了有力支持。在竞争激烈的市场环境中,了解客户购物偏好是赢得市场份额、提高客户满意度的关键。本数据集凭借其细分信息和独特价值,将帮助企业实现商业目标,成为市场研究的宝贵资源。
字段 | 说明 |
---|---|
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 | 客户购买频率(每周、每两周、每月等) |
# 导入需要的库
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.sparse.linalg import svds
from sklearn.preprocessing import MinMaxScaler
import warnings
from pylab import mpl, plt
warnings.filterwarnings("ignore")
plt.style.use('seaborn')
mpl.rcParams['font.family'] = 'serif'
# 读取数据
data = pd.read_csv("./shopping_trends.csv")
# 查看数据维度
data.shape
# 查看数据信息
data.info()
# 查看各列缺失值
data.isna().sum()
# 查看重复值
data.duplicated().sum()
# 判断使用折扣和使用优惠码的情况是否同时出现
(data['Discount Applied'] == data['Promo Code Used']).all()
通过判断Discount Applied和Promo Code Used两列,如果相等为True,则认定使用使用了优惠码,反之亦然。
首先,处理数据之前要养成好的习惯先查看数据集。
# 处理数据之前,先查看一下数据
data.head()
# 修改Customer ID格式
data['Customer ID'] = data['Customer ID'].astype(str)
# 删除使用优惠码的那一列
data.drop(['Promo Code Used'],axis=1,inplace=True)
sns.set_style("whitegrid")
plt.figure(figsize=(15, 7))
plt.subplot(1, 2, 1)
sns.distplot(data['Age'], kde=False, bins=10)
plt.title(f'Age Distribution', fontsize=15)
plt.xlabel('Age', fontsize=12)
plt.ylabel('Count', fontsize=12)
plt.subplot(1, 2, 2)
sns.countplot(data=data, x='Gender',order=data['Gender'].value_counts().index)
plt.title(f'Gender Distribution', fontsize=15)
plt.xlabel('Gender', fontsize=12)
plt.ylabel('Count', fontsize=12)
plt.xticks(rotation=0)
plt.tight_layout()
plt.show()
由图可知:男性客户数量大约是女性客户数量的两倍,客户的年龄分布比较均匀,从18岁到70岁,各年龄段人数相近。
# 1.商品类别的销售情况
category_sales = data.groupby('Category')['Purchase Amount (USD)'].sum().sort_values(ascending=False)
# 2.商品类别的订单量
category_popularity = data['Category'].value_counts()
# 3.不同类别商品的平均消费金额
category_avg_purchase = data.groupby('Category')['Purchase Amount (USD)'].mean().sort_values(ascending=False)
# 4.客户最常用的支付方式
payment_method_counts = data['Payment Method'].value_counts()
# 创建画布
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(14, 10))
fig.tight_layout(pad=5.0)
# 绘制商品类别销售总额的条形图
sns.barplot(x=category_sales.index, y=category_sales.values, ax=axes[0, 0])
axes[0, 0].set_title('Total Sales by Category')
axes[0, 0].set_xlabel('Category')
axes[0, 0].set_ylabel('Total Sales (USD)')
# 绘制商品订单情况的条形图
sns.barplot(x=category_popularity.index, y=category_popularity.values, ax=axes[0, 1])
axes[0, 1].set_title('Popularity by Category')
axes[0, 1].set_xlabel('Category')
axes[0, 1].set_ylabel('Number of Orders')
# 绘制商品类别的平均消费金额的条形图
sns.barplot(x=category_avg_purchase.index, y=category_avg_purchase.values, ax=axes[1, 0])
axes[1, 0].set_title('Average Purchase