英國(guó)電商數(shù)據(jù)分析報(bào)告
一、背景介紹
通過(guò)對(duì)某在線電商公司一年的銷售數(shù)據(jù)進(jìn)行分析,探索這一年內(nèi)的運(yùn)營(yíng)情況以及主要客戶群體的特點(diǎn)晕鹊,為該公司下一年的運(yùn)營(yíng)和營(yíng)銷活動(dòng)提供決策支持盏触。為此需要分析以下問(wèn)題:
1、這一年的總體銷售情況如何名秀?
2、各個(gè)國(guó)家的客戶在消費(fèi)水平方面存在怎么樣的差異?針對(duì)這種差異制定針對(duì)性的運(yùn)營(yíng)策略哟沫。
3、統(tǒng)計(jì)一天中客戶下單的高峰時(shí)段锌介,一年中屬于銷售旺季的月份嗜诀,便于公司提前安排網(wǎng)站維護(hù)、產(chǎn)品采購(gòu)孔祸、物流配送等方面的工作隆敢。
4、分析商品的單品退貨情況以及整體退貨情況崔慧,為公司找到造成客戶退貨的主要問(wèn)題所在拂蝎。
5、統(tǒng)計(jì)客戶的復(fù)購(gòu)率惶室、回購(gòu)率温自,以及回流率等指標(biāo),分析公司的客戶質(zhì)量情況拇涤。
6捣作、對(duì)客戶進(jìn)行RFM模型劃分,以便有側(cè)重地對(duì)不同的客戶進(jìn)行不同的營(yíng)銷活動(dòng)鹅士。
二券躁、數(shù)據(jù)理解
分析所用數(shù)據(jù)集E-Commerce Data來(lái)源于kaggle網(wǎng)站,由倫敦南岸大學(xué)工程學(xué)院公共分析小組主任陳大慶博士提供。
E-Commerce Data數(shù)據(jù)集是一家英國(guó)電商公司從2010年12月1號(hào)到2011年12月9號(hào)的真實(shí)交易數(shù)據(jù)也拜,共541909個(gè)記錄以舒。 該電商公司主要銷售的商品是各類禮品,其客戶有相當(dāng)一部分是各類批發(fā)商慢哈。
本數(shù)據(jù)集包含以下特征:
?發(fā)票編號(hào):對(duì)應(yīng)每筆訂單所分配唯一的6位數(shù)編號(hào)蔓钟,其中退貨訂單的代碼以字母'C'開頭。
?商品編號(hào):每個(gè)不同的商品分配唯一的5位數(shù)編號(hào)卵贱。
?商品描述:對(duì)每件商品的簡(jiǎn)略描述滥沫。
?商品數(shù)量:訂單內(nèi)的每種商品的交易數(shù)量。
?交易時(shí)間:每筆訂單發(fā)生的日期和時(shí)間键俱。
?單價(jià):商品的價(jià)格兰绣。
?客戶ID:每個(gè)客戶分配唯一的5位整數(shù)編號(hào)。
?國(guó)家:每個(gè)客戶所在國(guó)家/地區(qū)的名稱编振。
三缀辩、數(shù)據(jù)處理
預(yù)處理
通過(guò)對(duì)數(shù)據(jù)集進(jìn)行初步觀察,發(fā)現(xiàn)“商品描述”以及“客戶ID”兩個(gè)特征存在缺失值踪央,分別為1454和135080個(gè)記錄臀玄,此外,“商品數(shù)量”以及“單價(jià)”兩個(gè)特征存在負(fù)值等異常值畅蹂。
由于“客戶ID”特征則影響較大且無(wú)法進(jìn)行補(bǔ)償健无,且進(jìn)一步觀察發(fā)現(xiàn)“客戶ID”缺失的記錄在“國(guó)家”、“交易時(shí)間”等特征的分布上較為隨機(jī)魁莉,故將“客戶ID”缺失的記錄剔除不加入分析睬涧。而“商品描述”特征對(duì)分析過(guò)程作用不大募胃,故不進(jìn)行處理旗唁。
對(duì)進(jìn)行缺失值處理后的數(shù)據(jù)中,“商品數(shù)量”以及“單價(jià)”兩個(gè)特征為負(fù)值的記錄進(jìn)行觀察痹束,發(fā)現(xiàn)“單價(jià)”為負(fù)值的記錄在缺失值處理后已經(jīng)全部剔除检疫,而“商品數(shù)量”為負(fù)值的記錄對(duì)應(yīng)的“發(fā)票編號(hào)”均以“C”開頭,即退貨訂單祷嘶,為了后續(xù)需要的退貨率分析屎媳,將“商品數(shù)量”為負(fù)值的記錄保留。
由于2011年12月的數(shù)據(jù)僅記錄到12月9號(hào)论巍,未達(dá)到一個(gè)月的統(tǒng)計(jì)周期要求烛谊,故將2011年12月的數(shù)據(jù)剔除,不加入分析嘉汰。
特征工程:
根據(jù)本次分析的問(wèn)題丹禀,需要額外為數(shù)據(jù)集增加以下特征:
?商品總價(jià):訂單中每種商品的總價(jià)。
?退貨商品數(shù)量:退貨訂單內(nèi)的每種商品的交易數(shù)量。
?交易月份:每筆訂單發(fā)生的日期所在的年月份双泪。
?交易時(shí)段:每筆訂單發(fā)生的時(shí)間所在的時(shí)段持搜。
?退貨商品總價(jià):退貨訂單中每種商品的總價(jià)。
四焙矛、分析過(guò)程:
總體交易情況
2010年12月至2011年11月葫盼,該電商公司交易總額達(dá)到839萬(wàn)元。月交易額總體呈上升趨勢(shì)村斟,由年初的57萬(wàn)元增長(zhǎng)至年底的116萬(wàn)元贫导,月平均增長(zhǎng)率為6.64%,增長(zhǎng)形勢(shì)良好蟆盹。
各國(guó)消費(fèi)水平情況
從交易額占比的區(qū)域分布來(lái)看脱盲,英國(guó)本土是該公司的最主要的市場(chǎng),其交易額占比高達(dá)82%日缨,海外國(guó)家僅占交易總額的18%钱反,而從海外國(guó)家的占比排名來(lái)看,前五位是荷蘭匣距、愛(ài)爾蘭面哥、德國(guó)、法國(guó)以及澳大利亞毅待,占比分別為17.81%尚卫、16.56%、14.28%尸红,13.04%以及8.64%吱涉,其余海外國(guó)家占比均在4%以下。該公司的海外市場(chǎng)以英國(guó)周邊的歐洲國(guó)家以及同屬英聯(lián)邦成員的澳大利亞為主外里,這些國(guó)家以及英國(guó)本土的客戶是重點(diǎn)維持的對(duì)象怎爵。
在成交金額前五的海外國(guó)家中,愛(ài)爾蘭盅蝗、荷蘭和澳大利亞同時(shí)也占據(jù)了客單價(jià)排名前五席位中的三席鳖链,其中最高的愛(ài)爾蘭的客單價(jià)達(dá)到了8.8萬(wàn)元。
上述的三個(gè)國(guó)家以及新加坡的客單價(jià)均遠(yuǎn)高于其他國(guó)家的客單價(jià)平均水平0.18萬(wàn)元墩莫,客戶類型以批發(fā)商為主芙委。此外,新加坡的客單價(jià)水平是成交金額較低的海外國(guó)家中最為突出的狂秦,為2.1萬(wàn)元灌侣,應(yīng)列為重點(diǎn)發(fā)展的國(guó)家。
下單高峰期與銷售旺季
從一天中各個(gè)時(shí)段的訂單數(shù)量來(lái)看裂问,下單高峰期位于上午10點(diǎn)至下午3點(diǎn)這個(gè)時(shí)間段內(nèi)侧啼,由于網(wǎng)站訪客數(shù)量以及下單量較為集中玖姑,將對(duì)該公司網(wǎng)站的穩(wěn)定性提出挑戰(zhàn),應(yīng)安排工作人員在這個(gè)時(shí)間段加強(qiáng)監(jiān)控和維護(hù)慨菱。
每月訂單數(shù)量和每月交易金額的變化走勢(shì)基本上是一致的焰络,其中由于復(fù)活節(jié)以及英聯(lián)邦紀(jì)念日等節(jié)日對(duì)禮品需求的增加,該公司的訂單數(shù)量在3月和5月存在小高峰符喝,而從9月份開始則進(jìn)入一年的銷售旺季闪彼,客戶大量購(gòu)買禮品以迎接萬(wàn)圣節(jié)、圣誕節(jié)等重大節(jié)日的到來(lái)协饲。因此畏腕,在3月、5月以及9月開始到年底的這段時(shí)間里茉稠,應(yīng)提前針對(duì)節(jié)日的特點(diǎn)做好禮品品類的采購(gòu)描馅,以及相應(yīng)物流倉(cāng)儲(chǔ)準(zhǔn)備。
退貨情況分析
在退貨商品中而线,商品編號(hào)為“23843”以及“23166”的商品占比分別達(dá)到了29.47%和27.11%铭污,占到了總數(shù)的一半以上,其他的1918個(gè)品類的商品占比也僅有43.42%膀篮,有必要針對(duì)“23843”和“23166”這兩類商品進(jìn)行重點(diǎn)檢查嘹狞,確定退貨數(shù)量多的具體原因是包裝運(yùn)輸過(guò)程還是商品本身質(zhì)量造成的。
從區(qū)域?qū)Ρ鹊膶用鎭?lái)看誓竿,美國(guó)是退貨率最高的國(guó)家磅网,接近60%,是需要進(jìn)行改進(jìn)的重點(diǎn)筷屡。進(jìn)一步分析美國(guó)退貨商品的種類涧偷,發(fā)現(xiàn)每類退貨商品的件數(shù)均為1到2件,但種類數(shù)量很多毙死,占到銷售種類數(shù)量的67.5%燎潮,由此推測(cè)美國(guó)退貨率這么高的原因并非某些種類商品的質(zhì)量問(wèn)題,而是由于遠(yuǎn)距離運(yùn)輸造成商品在運(yùn)輸過(guò)程損壞规哲。
客戶質(zhì)量分析
全年每月的用戶復(fù)購(gòu)率均在30%以上跟啤,在5月份以及年底由于節(jié)日的推動(dòng)更是接近40%诽表,總體客戶質(zhì)量較高唉锌。
全年每月用戶回購(gòu)率總體在40%左右,并呈緩慢上升的趨勢(shì)竿奏,說(shuō)明隨著時(shí)間的推進(jìn)客戶忠誠(chéng)度得到培養(yǎng)袄简,表現(xiàn)為下個(gè)月繼續(xù)在該公司網(wǎng)站購(gòu)買商品。
對(duì)比每月活躍率泛啸、回流率以及新用戶率的走勢(shì)绿语,前期的購(gòu)買用戶以新用戶和活躍用戶為主,回流用戶很少,隨著時(shí)間推移吕粹,活躍用戶和回流用戶的比例逐漸增加种柑,新用戶減少,而在接近年末由于重大節(jié)日的推動(dòng)匹耕,新用戶比例由有所回升聚请,但總體仍以活躍用戶和回流用戶為主,年末是一個(gè)將潛在客戶轉(zhuǎn)化為新客戶的有利時(shí)間段稳其,可針對(duì)性對(duì)潛在客戶推送商品優(yōu)惠信息驶赏。
構(gòu)建RFM模型
分別以R、F既鞠、M三個(gè)指標(biāo)的中位數(shù)對(duì)客戶進(jìn)行劃分煤傍,便于針對(duì)性地對(duì)不同的客戶人群進(jìn)行營(yíng)銷活動(dòng)。
五嘱蛋、總結(jié)
1.全年交易額總體呈上升趨勢(shì)蚯姆,月平均增長(zhǎng)率達(dá)到6.64%,增長(zhǎng)形勢(shì)良好洒敏。
2.英國(guó)本土是最主要的市場(chǎng)蒋失,而海外市場(chǎng)則以英國(guó)的周邊以及同屬英聯(lián)邦成員的國(guó)家如荷蘭、愛(ài)爾蘭桐玻、德國(guó)篙挽、法國(guó)以及澳大利亞為主,這些國(guó)家以及英國(guó)本土的客戶是重點(diǎn)維持的對(duì)象镊靴。 此外铣卡,新加坡客戶的客單價(jià)處于高水平,應(yīng)列為重點(diǎn)發(fā)展的國(guó)家偏竟。
3.一天中的下單高峰期集中于上午10點(diǎn)至下午3點(diǎn)煮落,應(yīng)安排工作人員在這個(gè)時(shí)間段內(nèi)加強(qiáng)對(duì)網(wǎng)站穩(wěn)定性監(jiān)控和維護(hù)。在3月踊谋、5月以及9月開始到年底的這段時(shí)間里蝉仇,應(yīng)提前針對(duì)節(jié)日的特點(diǎn)做好禮品品類的采購(gòu),以及相應(yīng)物流倉(cāng)儲(chǔ)準(zhǔn)備殖蚕。
4.編號(hào)為“23843”以及“23166”的商品占到退貨商品總數(shù)的一半以上轿衔,應(yīng)對(duì)這兩類商品進(jìn)行重點(diǎn)檢查,確定導(dǎo)致客戶退貨具體原因是包裝運(yùn)輸過(guò)程還是商品本身質(zhì)量造成的睦疫,并進(jìn)行改進(jìn)害驹。此外,美國(guó)是退貨率最高的國(guó)家蛤育,其退貨率高的原因推測(cè)是由于遠(yuǎn)距離運(yùn)輸造成商品在運(yùn)輸過(guò)程損壞宛官,應(yīng)特別加強(qiáng)對(duì)運(yùn)輸往美國(guó)的商品的包裝保護(hù)以及對(duì)運(yùn)輸過(guò)程的監(jiān)管葫松。
5.復(fù)購(gòu)率和回購(gòu)率穩(wěn)定于較高水平,說(shuō)明總體客戶質(zhì)量和忠誠(chéng)度較高底洗。前期的購(gòu)買客戶以新用戶和活躍用戶為主腋么,而后期則以活躍用戶和回流用戶為主,但年末是一個(gè)將潛在客戶轉(zhuǎn)化為新客戶的有利時(shí)間段亥揖,可針對(duì)性對(duì)潛在客戶推送商品優(yōu)惠信息党晋。
6.通過(guò)構(gòu)建RFM模型客戶類型進(jìn)行劃分,針對(duì)性地對(duì)不同的客戶人群進(jìn)行營(yíng)銷活動(dòng)徐块。
六未玻、附錄
數(shù)據(jù)集來(lái)源:<u>https://www.kaggle.com/carrie1/ecommerce-data</u>
七、分析過(guò)程代碼
導(dǎo)入需要用到的工具庫(kù)胡控。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
讀取待分析的數(shù)據(jù)集扳剿,并顯示前五行初步觀察數(shù)據(jù)特征。
df = pd.read_csv(r'D:\360安全瀏覽器下載\ecommerce-data\data3.csv',encoding = 'GB2312')
df.head()
對(duì)數(shù)據(jù)進(jìn)行描述性統(tǒng)計(jì)昼激,顯示各個(gè)變量的樣本數(shù)庇绽、平均值、最值橙困、標(biāo)準(zhǔn)差等統(tǒng)計(jì)量瞧掺。
df.describe()
統(tǒng)計(jì)各個(gè)變量存在的空值數(shù)量。
df.isnull().sum()
將空值數(shù)量最多的變量“客戶ID”的空值刪除凡傅。
df = df[df['客戶ID'].notnull()]
由于2011年12月的數(shù)據(jù)不完整辟狈,故即將這部分?jǐn)?shù)據(jù)剔除
df = df[df['交易月份']!='2011-12']
構(gòu)建新變量“退貨商品數(shù)量”,并將該變量中的空值用0填充夏跷,同時(shí)將原變量“商品數(shù)量”中小于0的值轉(zhuǎn)換為0哼转。
df['退貨商品數(shù)量'] = -df[df['商品數(shù)量'] < 0]['商品數(shù)量']
df['退貨商品數(shù)量'] = df['退貨商品數(shù)量'].fillna(0)
df.loc[df['商品數(shù)量'] < 0,'商品數(shù)量'] = 0
構(gòu)建新變量“商品總價(jià)”、“退貨商品總價(jià)”槽华、“交易月份”壹蔓、“交易時(shí)段”。
df['商品總價(jià)'] = df['商品數(shù)量']*df['單價(jià)']
df['退貨商品總價(jià)'] = df['退貨商品數(shù)量']*df['單價(jià)']
df['交易時(shí)間'] = pd.to_datetime(df['交易時(shí)間'])
df['交易月份'] = df['交易時(shí)間'].map(lambda x: '%d%s%02d'%(x.year,'-',x.month))
df['交易時(shí)段'] = df['交易時(shí)間'].map(lambda x: '%02d%s'%(x.hour,':00'))
統(tǒng)計(jì)前年的交易總額猫态。
df[df['商品數(shù)量']>0]['商品總價(jià)'].sum()
統(tǒng)計(jì)各個(gè)月的交易金額佣蓉。
df[df['商品數(shù)量']>0].groupby('交易月份')['商品總價(jià)'].sum()
統(tǒng)計(jì)各個(gè)國(guó)家的交易金額占比。
df[df['商品數(shù)量']>0].groupby('國(guó)家')['商品總價(jià)'].sum().sort_values()/df['商品總價(jià)'].sum()
統(tǒng)計(jì)除英國(guó)外各個(gè)國(guó)家的交易金額占比并按交易金額占比排序亲雪。
df[(df['商品數(shù)量']>0)&(df['國(guó)家']!='United Kingdom')].groupby('國(guó)家')['商品總價(jià)'].sum().sort_values(ascending=False)/df[(df['商品數(shù)量']>0)&(df['國(guó)家']!='United Kingdom')]['商品總價(jià)'].sum()
統(tǒng)計(jì)各個(gè)國(guó)家客戶的客單價(jià)并按客單價(jià)排序勇凭。
(df[df['商品數(shù)量']>0].groupby('國(guó)家')['商品總價(jià)'].sum()/df[df['商品數(shù)量']>0].groupby('國(guó)家')['客戶ID'].nunique()).sort_values(ascending=False)
統(tǒng)計(jì)每個(gè)月的訂單數(shù)量。
df[df['商品數(shù)量']>0].groupby('交易月份')['發(fā)票編號(hào)'].nunique()
統(tǒng)計(jì)一天中每個(gè)時(shí)段的訂單量匆光。
df[df['商品數(shù)量']>0].groupby('交易時(shí)段')['發(fā)票編號(hào)'].nunique()
建立各類商品的退貨商品數(shù)量和商品數(shù)量的數(shù)據(jù)透視表套像,并計(jì)算出各類商品的退貨數(shù)量占比,并進(jìn)行排序终息。
df_thl = df.pivot_table(index='商品編號(hào)',values=['退貨商品數(shù)量','商品數(shù)量'],aggfunc={'退貨商品數(shù)量':'sum','商品數(shù)量':'sum'})
df_thl['商品退貨率'] = df_thl['退貨商品數(shù)量']/df_thl['商品數(shù)量']
df_thl.sort_values('商品退貨率',ascending=False)['商品退貨率']
建立客戶每月購(gòu)買次數(shù)的數(shù)據(jù)透視表夺巩。
pivot_purchase_times = df.pivot_table(index='客戶ID',columns='交易月份',values='發(fā)票編號(hào)',aggfunc='nunique')
建立客戶每月是否復(fù)購(gòu)的數(shù)據(jù)透視表,并統(tǒng)計(jì)出復(fù)購(gòu)率
pivot_repurchase = pivot_purchase_times.applymap(lambda x: 1 if x > 1 else 0 if x == 1 else np.NaN)
pivot_repurchase.sum()/pivot_repurchase.count()
建立客戶每月回購(gòu)情況的數(shù)據(jù)透視表周崭,并統(tǒng)計(jì)出回購(gòu)率柳譬。
pivot_purchase = pivot_purchase_times.applymap(lambda x: 1 if x>0 else 0)
pivot_backpurchase =(pivot_purchase.shift(-1,axis=1).fillna(0)+pivot_purchase).applymap(lambda x: 1 if x>1 else 0 )
pivot_backpurchase.sum()/pivot_purchase.sum()
定義對(duì)客戶類型進(jìn)行標(biāo)記的函數(shù)。
def C_l(x):
label=[]
for i in range(len(x)):
if x[i] == 0:
if len(label) > 0:
if label[i-1] == '潛在用戶':
label.append('潛在用戶')
else:
label.append('不活躍用戶')
else:
label.append('潛在用戶')
else:
if len(label) > 0:
if label[i-1] == '潛在用戶':
label.append('新用戶')
elif label[i-1] == '不活躍用戶':
label.append('回流用戶')
else:
label.append('活躍用戶')
else:
label.append('新用戶')
return pd.Series(label)
建立客戶標(biāo)記的表格续镇。
Customer_label = pd.DataFrame(pivot_purchase.apply(lambda x: C_l(x),axis=1))
Customer_label.columns = ['2010-12','2011-01','2011-02','2011-03','2011-04','2011-05','2011-06','2011-07','2011-08','2011-09','2011-10','2011-11','2011-12']
計(jì)算每月的的新用戶美澳、回流用戶、活躍用戶占比摸航。
Customer_label.apply(lambda x : pd.value_counts(x)).loc['新用戶']/Customer_label.apply(lambda x : pd.value_counts(x)).sum()
Customer_label.apply(lambda x : pd.value_counts(x)).loc['回流用戶']/Customer_label.apply(lambda x : pd.value_counts(x)).sum()
Customer_label.apply(lambda x : pd.value_counts(x)).loc['活躍用戶']/Customer_label.apply(lambda x : pd.value_counts(x)).sum()
建立客戶RFM統(tǒng)計(jì)量的數(shù)據(jù)透視表制跟,
pivot_RFM=df.pivot_table(index='客戶ID',values=['交易時(shí)間','發(fā)票編號(hào)','商品總價(jià)'],aggfunc={'交易時(shí)間':'max','發(fā)票編號(hào)':'nunique','商品總價(jià)':'sum'})
pivot_RFM['R']=(df['交易時(shí)間'].max()-pivot_RFM['R']).dt.days
定義進(jìn)行RFM客戶劃分的函數(shù)。
def C_L2(x):
if x.R<=0 and x.F>0 and x.M>0:
label = '重要價(jià)值客戶'
if x.R>0 and x.F>0 and x.M>0:
label = '重要保持客戶'
if x.R<=0 and x.F<=0 and x.M>0:
label = '重要發(fā)展客戶'
if x.R>0 and x.F<=0 and x.M>0:
label = '重要挽留客戶'
if x.R<=0 and x.F>0 and x.M<=0:
label = '潛力客戶'
if x.R>0 and x.F>0 and x.M<=0:
label = '一般保持客戶'
if x.R<=0 and x.F<=0 and x.M<=0:
label = '待開發(fā)新客戶'
if x.R>0 and x.F<=0 and x.M<=0:
label = '流失客戶'
return label
對(duì)客戶RFM數(shù)據(jù)透視表的客戶進(jìn)行劃分酱虎。
pivot_RFM['R'] = pivot_RFM['R'] - pivot_RFM['R'].median()
pivot_RFM['F'] = pivot_RFM['F'] - pivot_RFM['F'].median()
pivot_RFM['M'] = pivot_RFM['M'] - pivot_RFM['M'].median()
Customer_RFM_label=pivot_RFM.apply(lambda x: C_L2(x),axis=1)
計(jì)算每類客戶的占比雨膨。
Customer_RFM_label.value_counts()/Customer_RFM_label.count()