數(shù)據(jù)分析|UK E-Commerce真實(shí)數(shù)據(jù)RFM模型分析

一富弦、項(xiàng)目背景

??英國(guó)一家主要銷(xiāo)售創(chuàng)意禮品的24小時(shí)線上零售店,這家零售店在Kaggle開(kāi)源了從2010年12月1日至2011年12月9日大約53萬(wàn)行真實(shí)的交易數(shù)據(jù)噪裕。其中一些消費(fèi)者都屬于批發(fā)商級(jí)別萧锉,需要利用RFM模型對(duì)客戶進(jìn)行精準(zhǔn)管理,挖掘客戶價(jià)值洗贰。

關(guān)鍵詞: MySQL;Tableau陨倡;RFM模型

二敛滋、理解數(shù)據(jù)

首先在Kaggle上閱讀了解各個(gè)字段記錄的信息以及之間的邏輯關(guān)系:
InvoiceNo --> 訂單編號(hào)

StockCode --> 產(chǎn)品代碼

Description --> 產(chǎn)品描述

Quantity --> 產(chǎn)品購(gòu)買(mǎi)數(shù)量

InvoiceDate --> 訂單生成時(shí)間

UnitPrice --> 單價(jià)

CustomerID --> 顧客ID

Country --> 客戶所在國(guó)家

然后,使用Navicat可以非常方便的將CSV數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)中。

注意:需要重新設(shè)置字段數(shù)據(jù)類(lèi)型兴革。
alter table data modify column Quantity int(20);
alter table data modify column UnitPrice double;

三绎晃、數(shù)據(jù)清洗與數(shù)據(jù)預(yù)處理

1、刪除重復(fù)值

# 刪除重復(fù)值
create table uq_data
select into DISTINCT(*) 
from data 

2杂曲、異常值處理

??查看Quantity和UnitPrice中是否存在小于0的值

# 查看Quantity和UnitPrice中是否存在小于0的值
select * from  uq_data
where Quantity <= 0 or UnitPrice <= 0;

??注意到UnitPrice為null的行Description同樣為空庶艾,需要和相關(guān)業(yè)務(wù)人員進(jìn)行溝通確定缺失原因和處理措施。

刪除異常值

# 刪除異常值
create table backup_data
select *
from uq_data
where Quantity > 0 and UnitPrice > 0;

3擎勘、缺失值處理

1)查看哪些字段存在缺失值及其所占比例

# 查看各列是否有缺失值以及所占比例
select 
CONCAT(COUNT(*)-COUNT(InvoiceNo),' ','|',ROUND((1 - COUNT(InvoiceNo)/COUNT(*))*100,1), '%') as 訂單編號(hào),
CONCAT(COUNT(*)-COUNT(StockCode),' ','|',ROUND((1 - COUNT(StockCode)/COUNT(*))*100,1), '%') as 產(chǎn)品代碼,
CONCAT(COUNT(*)-COUNT(Description),' ','|',ROUND((1 - COUNT(Description)/COUNT(*))*100,1), '%') as 產(chǎn)品描述,
CONCAT(COUNT(*)-COUNT(Quantity),' ','|',ROUND((1 - COUNT(Quantity)/COUNT(*))*100,1), '%') as 產(chǎn)品購(gòu)買(mǎi)數(shù)量,
CONCAT(COUNT(*)-COUNT(InvoiceDate),' ','|',ROUND((1 - COUNT(InvoiceDate)/COUNT(*))*100,1), '%') as 訂單生成時(shí)間,
CONCAT(COUNT(*)-COUNT(UnitPrice),' ','|',ROUND((1 - COUNT(UnitPrice)/COUNT(*))*100,1), '%') as 單價(jià),
CONCAT(COUNT(*)-COUNT(CustomerID),' ','|',ROUND((1 - COUNT(CustomerID)/COUNT(*))*100,1), '%') as 顧客ID,
CONCAT(COUNT(*)-COUNT(Country),' ','|',ROUND((1 - COUNT(Country)/COUNT(*))*100,1), '%') as 國(guó)家
from backup_data;

??發(fā)現(xiàn)’產(chǎn)品描述‘和’顧客ID‘字段存在缺失值咱揍,所占比例分別為0.1%和25.1%。
??2)對(duì)于‘產(chǎn)品描述’字段货抄,考慮到其對(duì)總體的影響以及比例非常小述召,可以直接刪除所在的行朱转;重新創(chuàng)建一張Description不包含null值得表使用蟹地,原始數(shù)據(jù)保存积暖。

# 刪除Description含有空值的行,并且創(chuàng)建一張新的表
create table backup1_data
select *
from backup_data
where Description is not null;
drop table backup_data;

??3)’顧客ID‘字段為非計(jì)算字段并且缺失的比例較大,若直接刪除可能會(huì)對(duì)數(shù)據(jù)建模的準(zhǔn)確性產(chǎn)生較大影響怪与。實(shí)際業(yè)務(wù)中應(yīng)該和業(yè)務(wù)人員進(jìn)行溝通確定缺失的原因和處理措施夺刑。
??此外,留意到項(xiàng)目背景中特意提到存在一些批發(fā)商級(jí)別的客戶分别,這是不是意味著在數(shù)量那一欄需要分組處理呢遍愿?瀏覽數(shù)據(jù)后決定把Quantity分為五組(1-10、11-100耘斩、101-500沼填、501-1000、1000+)我們先看一下各個(gè)訂單下單品購(gòu)買(mǎi)數(shù)量規(guī)模分布括授,然后計(jì)算一下不同分組中顧客ID缺失的行所占的比例坞笙。
??為方便處理,我們先添加一列關(guān)于CustomerID是否為null的字段荚虚,作為分類(lèi)標(biāo)簽薛夜。

# 添加關(guān)于CustomerID是否含有空值的標(biāo)簽字段,is null :1,is not null:0
alter table backup1_data add column CId_null_label int;
update backup1_data set CId_null_label = 1
where CustomerID is null;
update backup1_data set CId_null_label = 0
where CustomerID is not null;

??Tableau連接到MySQL,并且利用分組功能將各個(gè)訂單下單品購(gòu)買(mǎi)數(shù)量級(jí)分為1-10版述、11-100梯澜、101-500、501-1000渴析、1000+五組晚伙,我們看一下各個(gè)數(shù)量級(jí)對(duì)產(chǎn)品購(gòu)買(mǎi)總量的貢獻(xiàn)。



??再看一下各個(gè)類(lèi)別下俭茧,CustomerID為null所占的比例:


CustomerID為null的訂單所占的比例

??通過(guò)條形圖我們可以直觀的看出在1-10類(lèi)別中CustomerID為null的比例超過(guò)25%撬腾,在11-100中接近16%,在其他類(lèi)別中的所占比例較低恢恼。
??結(jié)論:由于缺失值所在類(lèi)別集中在1-100區(qū)間民傻,并不是隨機(jī)分布,直接刪除會(huì)對(duì)樣本分析的準(zhǔn)確性產(chǎn)生影響场斑,需要根據(jù)實(shí)際的分析需求和業(yè)務(wù)人員溝通后再?zèng)Q定這部分?jǐn)?shù)據(jù)的后續(xù)處理漓踢。

??但是此處我們需要進(jìn)行RFM模型分析,并不需要建模漏隐,故暫時(shí)做刪除處理喧半。
??刪除CustomerID缺失的行,并且創(chuàng)建一張新的表

# 刪除CustomerID缺失的行,并且創(chuàng)建一張新的表
create table backup2_data
select *
from backup1_data
where CustomerID is not null;
drop table backup1_data;

4、格式化處理

RFM模型分析中需要某段時(shí)間的交易次數(shù)和交易金額青责。
1)nvoiceDate格式標(biāo)準(zhǔn)化

# InvoiceDate格式標(biāo)準(zhǔn)化
alter table backup2_data add column nvoiceTime varchar(255) not null;
update backup2_data set InvoiceTime = STR_TO_DATE(InvoiceDate, '%m/%d/%Y %H:%I');

2)添加交易金額Seals

# 添加交易金額Seals
alter table backup2_data add column Seals float not null;
update backup2_data set Seals = Quantity * UnitPrice;
添加InvoiceTime和Seals

四挺据、數(shù)據(jù)分析

RFM模型是根據(jù)客戶活躍程度和交易金額取具,進(jìn)行客戶價(jià)值細(xì)分的一種分析方法
RFM分析指標(biāo):


RFM分析指標(biāo)

客戶精細(xì)分類(lèi)參考:


1、數(shù)據(jù)準(zhǔn)備

用戶總數(shù):4339
訂單總數(shù):18536
統(tǒng)計(jì)時(shí)間區(qū)間:2010/12/01-2011/12/09
間隔天數(shù)計(jì)算錨點(diǎn):2011/12/09
間隔天數(shù):用戶最近一次交易日期-間隔天數(shù)計(jì)算錨點(diǎn)
交易頻率:統(tǒng)計(jì)時(shí)間區(qū)間內(nèi)交易次數(shù)/1
交易金額:統(tǒng)計(jì)時(shí)間區(qū)間內(nèi)總的交易額

create table RFM_model
select CustomerID, 
DATEDIFF('2011-12-09',MAX(InvoiceTime))as 間隔天數(shù),
COUNT(DISTINCT InvoiceNo)as 交易頻率, 
ROUND(SUM(Seals),2) as 交易金額
from backup2_data
group by CustomerID
order by 間隔天數(shù) DESC,交易金額 DESC,交易頻率  DESC;

2扁耐、各個(gè)維度分析及客戶評(píng)分

R_S:距離當(dāng)前日期越近暇检,得分越高,最高5份婉称,最低1份
評(píng)分標(biāo)準(zhǔn):10%块仆、25%、50%王暗、75%分位數(shù)附近值
F_S:交易頻率越高,得分越高悔据, 最高5份,最低1份
評(píng)分標(biāo)準(zhǔn):10%俗壹、25%科汗、50%、75%分位數(shù)附近值
M_S:交易金額越高绷雏,得分越高头滔, 最高5份,最低1份
評(píng)分標(biāo)準(zhǔn):10%之众、25%拙毫、50%、75%分位數(shù)附近值

1)R-S維度分析及客戶評(píng)分

通過(guò)設(shè)置不同的組距發(fā)現(xiàn)最合適的評(píng)分標(biāo)準(zhǔn)為:30棺禾、90缀蹄、180、360膘婶、>360
添加R-S列:

alter table RFM_model add R_S int(5);
update RFM_model set R_S = 
case 
    when 間隔天數(shù) <= 30 then 5
    when 間隔天數(shù) >30 and 間隔天數(shù) <= 90 then 4
    when 間隔天數(shù) >90 and 間隔天數(shù) <=180 then 3
    when 間隔天數(shù) >180 and 間隔天數(shù) <= 360 then 2
    else 1
    end
2)F-S維度分析及客戶評(píng)分
交易頻率篩選范圍:all缺前,組距:1

??發(fā)現(xiàn)數(shù)據(jù)乘完美的冪律分布,把組距調(diào)至10并且添加合計(jì)百分比標(biāo)簽:


i交易頻率篩選范圍:all悬襟,組距:10

??發(fā)現(xiàn)85%以上的Customer每年的消費(fèi)次數(shù)集中在30次以內(nèi)(可能是因?yàn)樯唐肥嵌Y物的原因衅码,消費(fèi)頻率較低,畢竟大家不會(huì)天天送禮物脊岳,實(shí)際業(yè)績(jī)表現(xiàn)需要跟業(yè)務(wù)人員確認(rèn))逝段,并且1-10,10-20之間的頻率分布差異較大割捅,需要將交易頻率篩選范圍調(diào)制0-30奶躯,組距調(diào)為1進(jìn)行分析。


交易頻率篩選范圍:0-30亿驾,組距:1

??發(fā)現(xiàn)最合適的評(píng)分標(biāo)準(zhǔn)為:>32嘹黔,32,10莫瞬,3儡蔓,=1郭蕉。只有一次交易記錄說(shuō)明沒(méi)有復(fù)購(gòu),單獨(dú)作為一組喂江。
添加F-S列:
# 添加F-S列:
alter table RFM_model add F_S int(5);
update RFM_model set F_S = 
case 
    when 交易頻率 > 32 then 5
    when 交易頻率 > 10 and 交易頻率 <= 32 then 4
    when 交易頻率 > 3 and 交易頻率 <= 10 then 3
    when 交易頻率 >= 2 and 交易頻率 <= 3 then 2
    else 1
    end;
3)M-S維度分析及客戶評(píng)分
度量:計(jì)數(shù)

??96.02%的訂單金額都在6K以內(nèi)召锈。因?yàn)榇嬖诙嗽瓌t,將度量由計(jì)數(shù)改為總和看一下交易額在6K以內(nèi)的訂單占總交易額的比例开呐。


度量:總和

??交易額在6K以內(nèi)的訂單占總交易額的比例為72.22%烟勋,剩下3.98%交易額大于6K的訂單貢獻(xiàn)了其余的27.78%的交易額规求。
??現(xiàn)在將組距調(diào)至0.5K:



??發(fā)現(xiàn)最合適的評(píng)分標(biāo)準(zhǔn)為:>6K筐付,6k,4k阻肿,2K瓦戚,1K,<1K丛塌。
添加F-S列:
# 添加M-S列:
alter table RFM_model add M_S int(5);
update RFM_model set M_S = 
case 
    when 交易金額 > 6000 then 5
    when 交易金額 > 4000 and 交易金額 <= 6000 then 4
    when 交易金額 > 2000 and 交易金額 <= 4000 then 3
    when 交易金額 >= 1000 and 交易金額 <= 2000 then 2
    else 1
    end;

3较解、客戶分層

??此時(shí)有125個(gè)層次,每個(gè)維度需要通過(guò)平均值分為兩層赴邻,將客戶分層減為8層印衔。實(shí)際業(yè)務(wù)中需要實(shí)際需求進(jìn)行分層。
??1)求平均值

# 求平均值
select 
ROUND(AVG(R_S),1)as R_mean,
ROUND(AVG(F_S),1)as F_mean,
ROUND(AVG(M_S),1)as M_mean
from RFM_model;

??2)添加R_level,F_level,M_level標(biāo)簽

# 添加R_level,F_level,M_level標(biāo)簽
alter table RFM_model add (
    R_level int(5),
    F_level int(5),
    M_level int(5))
update RFM_model set
    R_level = 
    case
            when R_S >3.8 then 1 else 0 end,
    F_level =
    case
            when F_S >2.1 then 1 else 0 end,
    M_level =
    case
            when M_S >1.7 then 1 else 0 end;

??3)依據(jù)客戶精細(xì)分類(lèi)參考添加客戶類(lèi)別標(biāo)簽姥敛,可以明顯看出R奸焙、F、M的權(quán)重依次升高

# 添加客戶類(lèi)別標(biāo)簽
alter table RFM_model add Cus_level varchar(255);
update RFM_model set Cus_level =
case 
          when R_level=1 and F_level=1 and M_level=1 then '0重要價(jià)值客戶'
      when R_level=0 and F_level=1 and M_level=1 then '1重要保持客戶'
      when R_level=1 and F_level=0 and M_level=1 then '2重要發(fā)展客戶'    
      when R_level=0 and F_level=0 and M_level=1 then '3重要挽留客戶'
      when R_level=1 and F_level=1 and M_level=0 then '4一般價(jià)值客戶'
      when R_level=1 and F_level=0 and M_level=0 then '5一般發(fā)展客戶'
      when R_level=0 and F_level=1 and M_level=0 then '6一般保持客戶'
            else '7流失客戶' end;

五彤敛、RFM模型分析結(jié)果

??統(tǒng)計(jì)區(qū)間(2010年12月1日至2011年12月9日)內(nèi)与帆,不包含空CustomerID的情況下,用戶總數(shù)為4372位墨榄。包含空CustomerID的情況下玄糟,總訂單25900筆,其中(Quantity<0)訂單5172筆袄秩,總交易金額9747747.93英鎊阵翎,產(chǎn)品銷(xiāo)售總量5628434件。其中之剧,用于RFM 模型分析的用戶數(shù)量為4339位郭卫,有效訂單18536筆。


客戶分類(lèi)結(jié)果

??在2010年12月1日到2011年12月9日期間猪狈,0高價(jià)值客戶數(shù)量為1158位箱沦,所占數(shù)量占總客戶量的比例為26.69%,所占交易額占總交易額的比例為73.08%雇庙,基本符合現(xiàn)實(shí)中的二八原則谓形。


高價(jià)值客戶數(shù)量所占比例和交易金額所占比例分布圖

??數(shù)量占比26.90%的7流失客戶對(duì)總交易額的貢獻(xiàn)占比僅為4.44%灶伊,利用RFM模型有效的篩選出了低價(jià)值客戶,提高精準(zhǔn)營(yíng)銷(xiāo)的精度寒跳,降低營(yíng)銷(xiāo)成本的同時(shí)提高轉(zhuǎn)化率聘萨。


流失客戶數(shù)量所占比例和交易金額所占比例分布圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市童太,隨后出現(xiàn)的幾起案子米辐,更是在濱河造成了極大的恐慌,老刑警劉巖书释,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翘贮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡爆惧,警方通過(guò)查閱死者的電腦和手機(jī)狸页,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)扯再,“玉大人芍耘,你說(shuō)我怎么就攤上這事∠ㄗ瑁” “怎么了斋竞?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)秃殉。 經(jīng)常有香客問(wèn)我坝初,道長(zhǎng),這世上最難降的妖魔是什么复濒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任脖卖,我火速辦了婚禮,結(jié)果婚禮上巧颈,老公的妹妹穿的比我還像新娘畦木。我一直安慰自己,他們只是感情好砸泛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布十籍。 她就那樣靜靜地躺著,像睡著了一般唇礁。 火紅的嫁衣襯著肌膚如雪勾栗。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天盏筐,我揣著相機(jī)與錄音围俘,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛界牡,可吹牛的內(nèi)容都是我干的簿寂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼宿亡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼常遂!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起挽荠,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤克胳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后圈匆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體漠另,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年臭脓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酗钞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腹忽。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡来累,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窘奏,到底是詐尸還是另有隱情嘹锁,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布着裹,位于F島的核電站领猾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏骇扇。R本人自食惡果不足惜摔竿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望少孝。 院中可真熱鬧继低,春花似錦、人聲如沸稍走。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)婿脸。三九已至粱胜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間狐树,已是汗流浹背焙压。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涯曲。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓答憔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親掀抹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子虐拓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354