基于K-Means聚类与RFM模型分析顾客消费情况【500010102】

项目说明

本数据集是生成式模拟数据,本项目通过可视化分析对数据进行初步探索,再通过时间序列针对店铺的销售额进行分析,对时序图进行分解,发现数据存在季节性,并且通过auto_arima自动选择参数建立了SARIMA模型,对未来7天的销售额进行预测,并利用聚类分析将消费者分为不同的群体,再建立RFM模型,将消费者进一步划分为不同价值的客户,对于不价值的消费者,采取不同的方案,通过这些模型,可以针对不同的消费群体采取不同的营销方案,尽可能的保留重要价值客户,对于一些低价值的客户,可以降低投入成本。

数据说明

字段名称 描述
订单交易时间 交易时候的时间
订单编号 交易订单的编号
订单来源 订单的来源:直播下单,店铺下单
用户ID 消费者的ID
会员 判断该消费者是否为本店会员
首次下单用户 判断该消费者是否为首次下单的用户
性别 消费者的性别:男,女
品类 商品类型,共四类:A,B,C,D
商品单价 商品的价格
购买数量 购买商品的数量
活动优惠 是否使用了活动优惠
换货 是否换货,0-否,1-是
退货 是否退货,0-否,1-是
已评价 是否已经评价,0-否,1-是

数据处理

Python库导入

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.tsa.statespace.sarimax import SARIMAX
from pmdarima import auto_arima # 自动选择参数
import statsmodels.api as sm
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

数据导入

data = pd.read_csv("./data/orders_data.csv")

数据预览

# 查看数据维度
data.shape

image.png

# 查看数据信息
data.info()

image.png

# 查看各列缺失值
data.isna().sum()

image.png

# 查看重复值
data.duplicated().sum()

image.png

数据逻辑性检查

# 检查用户会员状态是否一致
membership_inconsistency_count = sum(data.groupby('用户ID')['会员'].nunique() > 1)
print(f"会员状态不一致的用户数量: {
     
     membership_inconsistency_count}")
# 检查用户性别是否一致
gender_inconsistency_count = sum(data.groupby('用户ID')['性别'].nunique() > 1)
print(f"性别不一致的用户数量: {
     
     gender_inconsistency_count}")

image.png

first_order_flag = data.groupby('用户ID')['订单交易时间'].transform('min') == data['订单交易时间'] # 为了获取第一次交易的时间

# 计算那些在第一次订单之后仍标记为首次下单的情况数量
inconsistencies_count = sum((first_order_flag == False) & (data['首次下单用户'] == '是'))  # 计算第一次交易后,判断后续交易中,是否还被定义为首次下单用户

print(f"首次下单状态不一致的用户数量: {
     
     inconsistencies_count}")

image.png
可以看到,虚拟出来的数据逻辑上存在一些错误,有的用户在某个订单中被定义成会员或者男性,但是在后面的订单中又被定义成非会员或者女性,以及有的用户以及下过单了,结果后续订单还被定义为首次下单用户,所以逻辑存在错误,需要在之后进行处理,使得数据变得合理。

数据处理

# 对性别不一致的数据进行处理
# 找出性别不一致的用户
gender_inconsistencies = data.groupby('用户ID')['性别'].nunique() 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神仙别闹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值