数据分析项目-英国礼品商城数据分析

本文通过Kaggle上的英国E-Commerce数据,运用RFM模型分析用户行为,揭示了客户的购买频次、最近购买时间及消费金额。数据显示,大部分用户购买频次和消费金额偏低,可能由礼品购买的季节性和产品定价决定。同时,超过90%的用户在90天内购买过商品,且主要集中在低价区间。通过对客户群体的细分,提出针对不同类型的客户采取精准营销策略。
摘要由CSDN通过智能技术生成

Kaggle: UK E-Commerce 用户行为分析

项目概览

  • 数据背景:
    此次项目数据来自Kaggle,是英国零售商的实际交易数据,包含了2010年12月1日至2011年12月9日在英国注册的非实体网上零售发生的所有交易。公司主要销售独特的全天候礼品。该公司的许多客户都是批发商。

  • 分析目的:
    采用RFM模型,从用户、地区和时间等维度分析用户行为并提出优化建议。

理解数据

将下载好的数据导入数据库中,得到一个542K x 8 的数据集,列属性分别为:

  • InvoiceNo --> 订单号码: 6位字符串
  • StockCode --> 产品代码: 6位字符串
  • Description --> 产品描述
  • Quantity --> 产品数量:交易产品数量
  • InvoiceDate --> 订单日期:订单发生的日期和时间
  • UnitPrice --> 单价:浮点数值
  • CustomerID --> 顾客ID:5位字符串
  • Country --> 国家:客户所在地

数据预处理

观察数据集

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 541909 entries, 0 to 541908
Data columns (total 8 columns):
InvoiceNo      541909 non-null object
StockCode      541909 non-null object
Description    540455 non-null object
Quantity       541909 non-null int64
InvoiceDate    541909 non-null object
UnitPrice      541909 non-null float64
CustomerID     406829 non-null float64
Country        541909 non-null object
dtypes: float64(2), int64(1), object(5)
memory usage: 33.1+ MB
df.head()

在这里插入图片描述

df.describe()

在这里插入图片描述
修改一下 InvoiceDate 的日期显示类型,然后先增加一列日期

df['InvoiceDate']=pd.to_datetime(df.InvoiceDate,format='%m/%d/%Y %H:%M')
df['Date']=df['InvoiceDate'].dt.date

检查,处理空值

检查空值

df.isnull().sum()

在这里插入图片描述

显示空值行

df[df.isnull().T.any()]

在这里插入图片描述
统计不同列的缺失率
描述和客户ID有缺失,而且确实的比例比较高。

df.apply(lambda x :sum(x.isnull())/len(x),axis=0)

在这里插入图片描述
删除不用的数据

df.drop(['Description'],axis=1,inplace=True)
df.head()

在这里插入图片描述

标记缺失值

df['CustomerID'] = df['CustomerID'].fillna('U')

新增加一列用以表示每笔订单的金额

df['amount'] = df['Quantity']*df['UnitPrice']
df.head()

在这里插入图片描述
去重

df = df.drop_duplicates()

再看一下UnitPrice小于0的情况,即退款的订单

df2=df[df['UnitPrice']<=0]
df2.shape[0]/df.shape[0]

在这里插入图片描述
再看一下有效订单,这里排除了金额小于等于0的订单,即退货情况和赠品(我认为单价为0应该是赠品吧)

df1=df[(df['Quantity']>0) & (df['UnitPrice']>0)]
df1

在这里插入图片描述

RFM模型分析

DATE一列已经被创造出来,且我们保存了原来的InvoiceDate 方便之后进行对照,RFM的定义不再赘述,下面是针对该实验的每个参数的实现方法:
R:最近的一次的消费。我们采用最后一天(max)作为“今天”减去每位顾客最后一次消费的时间
F: 每位顾客购买的频次
M:每位顾客购买的销量总额: unitprice*quantity
在这里插入图片描述

R_value=df1.groupby('CustomerID')['Date'].max()
R_value

在这里插入图片描述

R_value = (df1['Date'].max() - R_value).dt.days
R_value

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值