一. 項(xiàng)目來源:
數(shù)據(jù)來源:?https://www.kaggle.com/jr2ngb/superstore-data?select=superstore_dataset2011-2015.csv
????數(shù)據(jù)來自kaggle網(wǎng)站, 是全球某大型超市2011年至2014年的銷售數(shù)據(jù), 參考電商分析8類基本指標(biāo)安皱,并結(jié)合數(shù)據(jù)集特點(diǎn)荚坞,即電商基礎(chǔ)的“人茄靠、貨、場”進(jìn)行分析哥力。
二. 分析思路
1.? 整體運(yùn)營情況分析(場):?
????銷售額分析(每年銷售額,? 每年銷售額業(yè)績增長率,? 每年每月銷售額,? 每年每月銷售業(yè)績增長率),??
????利潤分析(每年利潤額,? 每年利潤增長率,? 每年利潤率,? 每年每月利潤及利潤率)
? ? 市場布局分析: 全球不同分店銷售額對(duì)比
2. 商品結(jié)構(gòu)分析(貨): 整體銷售( 銷售結(jié)構(gòu), 爆款)
3. 客戶價(jià)值分析(人):?
? ? 用戶概覽: (不同類型客戶分析)
? ? 用戶數(shù)量: (新客戶用戶數(shù), 老客戶用戶數(shù), 新老客戶用戶數(shù))
? ? 用戶質(zhì)量: (活躍用戶數(shù), 沉睡用戶數(shù), 復(fù)購率, 回購率, RFM模型)
三. 處理
1. 讀取數(shù)據(jù):?
data=pd.read_excel('E:\superstore_dataset2011-2015.xls', encoding='utf8')
data.head()
2. 數(shù)據(jù)清洗
data.isna().any()
可以看到Postal Code 數(shù)據(jù)部分缺失, 不過后面的分析并不需要用到這個(gè)字段.?
data.describe()
無異常值發(fā)現(xiàn)
第20066行前后日期格式不一致,?統(tǒng)一轉(zhuǎn)化為datetime格式
data['Order Date']=pd.to_datetime(data['Order Date'])?
#新建年,月列, 便于后續(xù)分析
data['year']=data['Order Date'].dt.year
data['month']=data['Order Date'].dt.month
data['year_month']=data['Order Date'].values.astype('datetime64[M]')
3. 構(gòu)建模型
3.1整體運(yùn)營情況分析
#選取銷售分析數(shù)據(jù)子集
data_sales=data[['Order Date','Sales','Profit','year','month']]
data_sales.head()
3.1.1#整體瀏覽
fig=plt.figure(figsize=(20,3))
sales_tem=data_sales[['Order Date','Sales','Profit']]
sales_tem.index=sales_tem['Order Date'].astype('object')
sales_tem[['Sales','Profit']].plot(kind='line',style='--g.',colormap='Accent_r', figsize=(10,4),title='four years Sales and Profit table',)
plt.grid()
#計(jì)算年度&月度銷售額/利潤
gb=data_sales.groupby(['year','month'])
sales_year=gb.sum()
sales_year
year_2011=sales_year.loc[(2011,slice(None)),:].reset_index()
year_2012=sales_year.loc[(2012,slice(None)),:].reset_index()
year_2013=sales_year.loc[(2013,slice(None)),:].reset_index()
year_2014=sales_year.loc[(2014,slice(None)),:].reset_index()
year_2011
year_2012
year_2013
year_2014
#構(gòu)建銷售表
sales=pd.concat([year_2011['Sales'],year_2012['Sales'],
? ? ? ? ? ? ? ? year_2013['Sales'],year_2014['Sales']],axis=1)
sales.columns=['Sales_2011','Sales_2012','Sales_2013','Sales_2014']
sales.index=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
sales
#構(gòu)建利潤表
profit=pd.concat([year_2011['Profit'],year_2012['Profit'],
? ? ? ? ? ? ? ? year_2013['Profit'],year_2014['Profit']],axis=1)
profit.columns=['Profit_2011','Profit_2012','Profit_2013','Profit_2014']
profit.index=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
profit
3.1.2銷售額分析
#計(jì)算2011-2014年年度總銷售額及增長率
#計(jì)算年度銷售額并圖表展示
sales_sum=sales.sum()
sales_sum.plot(kind='bar',colormap = 'RdYlGn_r',alpha=0.5)
plt.grid()
#計(jì)算每年增長率
rise_12=sales_sum[1]/sales_sum[0]-1
rise_13=sales_sum[2]/sales_sum[1]-1
rise_14=sales_sum[3]/sales_sum[2]-1
rise_rate=[0,rise_12,rise_13,rise_14]
#表格顯示增長率
sales_sum=pd.DataFrame({'sales_sum':sales_sum})
sales_sum['rise_rate']=rise_rate
sales_sum
sales.plot.area(colormap = 'Accent_r',stacked=False)
#2011-2014月度銷售額對(duì)比表
sales.style.background_gradient(cmap='Greens',axis =0)
#2011-2014銷售額折線圖
sales.plot.area(colormap = 'Accent_r',stacked=False)
#計(jì)算每月同比增長率
rise=pd.DataFrame()
rise['rise_2012']=(sales['Sales_2012']-sales['Sales_2011'])/sales['Sales_2011']
rise['rise_2013']=(sales['Sales_2013']-sales['Sales_2012'])/sales['Sales_2012']
rise['rise_2014']=(sales['Sales_2014']-sales['Sales_2013'])/sales['Sales_2013']
rise
rise.style.background_gradient(cmap='Greens',axis =1,low=0,high=1)
#計(jì)算2011年個(gè)月份銷售占比及貢獻(xiàn)最大月份(2012, 2013, 2014代碼類似此處省略)
sales_11_sort=sales['Sales_2011'].sort_values(ascending=False)
sales_11_sort.plot(kind='bar',color='g',alpha=0.5,figsize=(10,6))
plt.ylabel('monthly sales of 2011')
p=sales_11_sort.cumsum()/sales_11_sort.sum()? #創(chuàng)建累計(jì)占比,Series
key=p[p>0.8].index[0]
key_num=sales_11_sort.index.tolist().index(key)
print('超過80%累計(jì)占比的節(jié)點(diǎn)值索引為:' ,key)
p.plot(style='--ko', secondary_y=True) #y副坐標(biāo)軸
plt.axvline(key_num,hold=None,color='r',linestyle='--',alpha=0.8)
plt.text(key_num+0.2,p[key],'cumulative proportion: %.3f%%' %(p[key]*100),color='r')
plt.ylabel('proportion of cumulative sales')
key_num = sales_11_sort[:key_num+1]
print('核心月份為:')
print(key_num)
3.1.3利潤分析
#計(jì)算2011-2014年年度總利潤及增長率
#計(jì)算年度總利潤并圖表展示
profit_sum=profit.sum()
profit_sum.plot(kind='bar',colormap = 'RdYlGn_r',alpha=0.5)
plt.grid()
#計(jì)算每年增長率
rise_12=profit_sum[1]/profit_sum[0]-1
rise_13=profit_sum[2]/profit_sum[1]-1
rise_14=profit_sum[3]/profit_sum[2]-1
rise_rate=[0,rise_12,rise_13,rise_14]
#表格顯示增長率
profit_sum=pd.DataFrame({'profit_sum':profit_sum})
profit_sum['rise_rate']=rise_rate
profit_sum
profit.plot.area(colormap = 'Accent_r',stacked=False)
#計(jì)算每月同比增長率
rise_p=pd.DataFrame()
rise_p['rise_2012']=(profit['Profit_2012']-profit['Profit_2011'])/profit['Profit_2011']
rise_p['rise_2013']=(profit['Profit_2013']-profit['Profit_2012'])/profit['Profit_2012']
rise_p['rise_2014']=(profit['Profit_2014']-profit['Profit_2013'])/profit['Profit_2013']
rise
rise_p.style.background_gradient(cmap='Greens',axis =1,low=0,high=1)
#計(jì)算2011年每月利潤率占比變化(2012, 2013, 2014代碼類似此處省略)
profit_rate=pd.DataFrame()
profit_rate['p-rate-11']=profit['Profit_2011']/sales['Sales_2011']
profit_rate_2011=profit['Profit_2011']/sales['Sales_2011']
sales['Sales_2011'].plot(kind='bar',color='g',alpha=0.5)
profit['Profit_2011'].plot(kind='bar',color='g',alpha=0.7)
profit_rate_2011.plot(style='--r.', secondary_y=True,alpha=0.5,label='profit_rate_2011')
plt.legend(loc='upper center')
plt.grid()
分析:?通過以上計(jì)算結(jié)果和圖表展示可以發(fā)現(xiàn)获印,超市2011-2014年每年業(yè)績呈現(xiàn)上升趨勢涂滴,銷售額、利潤額笆焰、銷售量劫谅、利潤率都在上升,銷售額從2011年的226w到2014年的430w,說明經(jīng)營在逐步穩(wěn)定捏检。但是從銷售額對(duì)比亞馬遜/沃爾瑪這種大型超市荞驴,還是有一定差距,可以繼續(xù)努力贯城。
? ? ? ? 從增長率來看熊楼,銷售額、利潤額能犯、銷售量鲫骗、利潤率從11年到13年均在穩(wěn)步提升,其中2013年銷售額增長率達(dá)到了27.2%踩晶,從業(yè)績增長率來看执泰,對(duì)比沃爾瑪公開數(shù)據(jù)顯示(2012-2014年均增長率為4.5%),還是非常有競爭力的(但是沃爾瑪?shù)幕鶖?shù)大渡蜻,增長率會(huì)放緩术吝,所以要結(jié)合銷售額和增長率一起看),但我們也可以發(fā)現(xiàn)茸苇,14年的銷售額排苍、利潤額、銷售量学密、利潤率的增長率相較13年淘衙,均有所回落,其中利潤增長明顯放緩腻暮,2014年利潤增長率為23.9%(2013年為32.4%彤守,),同時(shí)比2014年銷售額增長率(26.25%)低哭靖,猜測和14年促銷活動(dòng)讓利過多導(dǎo)致利潤下降遗增。但是利潤率總體平穩(wěn),穩(wěn)定在11%-12%之間款青。此外做修,結(jié)合年度銷售額/利潤額/銷量及增長率,再結(jié)合公司整體戰(zhàn)略規(guī)劃抡草,可以預(yù)測或制定下一年度總銷售額業(yè)績指標(biāo)饰及。
3.1.3市場布局分析
sales_market=data.groupby('Market')['Sales'].sum()
sales_market.plot(kind='pie', autopct="%1.1f%%", title='2011-2014總銷售額占比')
分析:?從占比圖中可以看出APAC地區(qū)銷售額占比最大為28.4%,而Canada地區(qū)的銷售額占比最少康震,并且只有0.5%燎含,說明市場幾乎沒有打開,可以根據(jù)公司的總體戰(zhàn)略部署進(jìn)行取舍腿短,從而根據(jù)銷售額占比分配下一年的銷售額指標(biāo)屏箍。
sales_market_year=data.groupby(by=['Market', 'year'])['Sales'].sum().reset_index()
#2011-2014不同地區(qū)銷售額對(duì)比
sales_market_year2=pd.pivot_table(sales_market_year, index='Market', columns='year', values='Sales')
sales_market_year2.plot(kind='bar', title='2011-2014不同地區(qū)銷售額對(duì)比')
分析:?從上面的圖形中可以看出绘梦,各個(gè)地區(qū)的2011年-2014年銷售總額均是增長的趨勢,在APAC地區(qū)和EU地區(qū)的增長速度比較快速赴魁,可以看出市場占有能力也在不短增加卸奉,企業(yè)市場前景比較好,下一年可以適當(dāng)加大運(yùn)營成本颖御,其他地區(qū)可以根據(jù)自身地區(qū)消費(fèi)特點(diǎn)榄棵,吸取上面兩個(gè)地區(qū)的運(yùn)營模式。
#不同類型產(chǎn)品在不同地區(qū)銷售額對(duì)比
category_sales_market=data.groupby(by=['Market', 'Category'])['Sales'].sum().reset_index()
category_sales_market2=pd.pivot_table(category_sales_market, index='Market', columns='Category', values='Sales')
category_sales_market2.plot(kind='bar', title='不同類型產(chǎn)品在不同地區(qū)銷售額對(duì)比', figsize=(10, 8))
分析:?所有產(chǎn)品我們按照三個(gè)大的類型進(jìn)行了區(qū)分潘拱,分別是Furniture(家具)疹鳄、Technology(電子產(chǎn)品)、Office Supplies(辦公用品)芦岂。通過上圖我們大致可以看出瘪弓,在各大地區(qū)銷售額都比較高是電子產(chǎn)品,可以根據(jù)企業(yè)的整體戰(zhàn)略部署適當(dāng)?shù)募哟髮?duì)各地區(qū)該品類的投入禽最,以便擴(kuò)大優(yōu)勢杠茬。
3.1.4銷售淡旺季分析
year_month=data.groupby(by=['year','month'])['Sales'].sum()
sales_year_month=year_month.reset_index()
sales_year_month=pd.pivot_table(sales_year_month, index='month', columns='year', values='Sales')
sales_year_month.plot(title='各年各月的總銷售額')
分析:?通過圖表我們基本可以看出,該超市2011年-2014年每一年的銷售額同比上一年都是上升趨勢弛随,所以很容易發(fā)現(xiàn)該超市的旺季是下半年,另外宁赤,我們在上半年銷售額中發(fā)現(xiàn)6月份的銷售額也是比較高的舀透,所以可以在6月份開始加大一些運(yùn)營成本,進(jìn)而更大一步提高銷售額决左,但是需要注意是下半年的7月份和10月份銷售額會(huì)有明顯的下降愕够,可以針對(duì)這些下降的月份多舉行一些營銷活動(dòng)。
4. 商品結(jié)構(gòu)分析(貨)
4.1銷售數(shù)量前十
Top10_quantity=data.groupby('Product ID').agg({'Customer ID':'count', 'Sales':'sum'}).reset_index().sort_values(by=['Customer ID'], ascending=False)[['Product ID', 'Sales']].head(10)
Top10_quantity
4.2銷售金額前10
Top10_amount=data.groupby("Product ID").agg({'Customer ID':'count','Sales':'sum'}).reset_index().sort_values(by=['Sales'],ascending=False)[['Product ID','Sales']].head(10)
Top10_amount
分析:?我們可以發(fā)現(xiàn)銷售數(shù)量最多的是office產(chǎn)品佛猛,而銷售金額最多是電子惑芭,家具等大額商品
4.3各類物品銷售金額, 利潤率和銷售額累計(jì)占比
data['Category_Sub_Category'] = data[['Category','Sub-Category']].apply(lambda x:str(x[0])+'_'+str(x[1]),axis=1)
data_Category_Sub_Category=data.groupby('Category_Sub_Category').agg({'Profit':'sum','Sales':'sum'}).reset_index().sort_values(by=['Sales'],ascending=False)[['Category_Sub_Category','Sales','Profit']]
data_Category_Sub_Category['cumSales'] = data_Category_Sub_Category['Sales'].cumsum()/data_Category_Sub_Category['Sales'].sum()
data_Category_Sub_Category
#可視化
bar_width = 0.45
n = len(data_Category_Sub_Category['Category_Sub_Category'])
x = np.arange(len(data_Category_Sub_Category['Category_Sub_Category']))
ax = plt.subplots(1,1)
ax = plt.bar(x-bar_width/2, data_Category_Sub_Category['Sales'], bar_width)
ax = plt.bar(x+bar_width/2, data_Category_Sub_Category['Profit'], bar_width)
plt.xticks(x, list(data_Category_Sub_Category['Category_Sub_Category']), rotation=90)
plt.xlabel('Category_Sub_Category', fontsize=12)
plt.ylabel('Sales/Profit', fontsize=12)
plt.legend(('Sales', 'Profit'), fontsize=15)
plt.show()
分析:?從圖表中可以很清晰的看到不同產(chǎn)品的銷售額貢獻(xiàn)對(duì)比,可以判斷出furniture(家具)中Bookcases(書柜)继找、Chairs(椅子)遂跟、Tables(桌子),Office supplies(辦公用品)中Appliances(電器)婴渡、Storage(儲(chǔ)藏箱)幻锁,Technology(電子技術(shù)產(chǎn)品)中Accessories(附件)、Copiers(復(fù)印機(jī))边臼、Machines(機(jī)器)哄尔、Phones(電話/手機(jī)),是整體產(chǎn)品中銷售比較好的柠并。
????????從著名的帕累托二八法則分析也可以看出岭接,這幾款產(chǎn)品的總銷售占比達(dá)到84%富拗,應(yīng)該是自家優(yōu)勢主營產(chǎn)品,后續(xù)經(jīng)營中應(yīng)繼續(xù)保持鸣戴,可以結(jié)合整體戰(zhàn)略發(fā)展適當(dāng)加大投入啃沪,逐漸形成自己的品牌。
????????同時(shí)葵擎,也可以發(fā)現(xiàn)谅阿,末尾占比16%的產(chǎn)品中,Binders(粘合劑)酬滤、Furnishings(家具)签餐、Art(藝術(shù)品)、Paper(紙)盯串、Supplies(供應(yīng)品)氯檐、Envelopes(信封)、Fasteners(緊固件)体捏、Labels(標(biāo)簽)均是辦公用品中的小物件冠摄。可以參考“啤酒與尿布”的故事几缭,與其他主營產(chǎn)品結(jié)合河泳,連帶銷售。(也有可能現(xiàn)在的這些小產(chǎn)品主要就是靠連帶銷售來的銷售額年栓,由于篇幅有限拆挥,后續(xù)會(huì)專題對(duì)關(guān)聯(lián)銷售進(jìn)行分析~)。
????????但是值得關(guān)注的是某抓,Tables(桌子)的利潤是負(fù)纸兔,表明這個(gè)產(chǎn)品目前處于虧損狀態(tài),應(yīng)該是促銷讓利太多否副。通過檢查原數(shù)據(jù)汉矿,發(fā)現(xiàn)Tabels大部分都在打折,打折的銷量高達(dá)76%备禀。如果是在清庫存洲拇,這個(gè)效果還是不錯(cuò)的,但如果不是曲尸,說明這個(gè)產(chǎn)品在市場推廣上遇到了瓶頸呻待,或者是遇到強(qiáng)競爭對(duì)手,需要結(jié)合實(shí)際業(yè)務(wù)進(jìn)行分析队腐,適當(dāng)改善經(jīng)營策略蚕捉。
5. 客戶價(jià)值分析(人):?
5.1用戶概覽
#不同類型客戶分析
data_Segment_Year_Sales=data.groupby(['Segment', 'year']).agg({'Sales':'sum'}).reset_index()
data_Segment_Year_Sales
#每年客戶類型數(shù)量
data_Segment_Year_Sales['Segment_Year_count']=data_Segment_Year_Sales.apply(lambda x: Segment_Year_Customer_count(x), axis=1)
#每年各類型客戶人均銷售額
data_Segment_Year_Sales['Segment_Year_price']=data_Segment_Year_Sales.apply(lambda x: x[2]/x[3], axis=1)
#每年各類型客戶銷售額占比
data_Segment_Year_Sales['Segment_year_prop']=data_Segment_Year_Sales.apply(lambda x:x[3]/data.loc[(data['year']==x[1])].drop_duplicates(subset=['Customer ID'], keep='first')['Customer ID'].count()*100, axis=1)
data_Segment_Year_Sales
#2011年不同類型客戶占比(2012, 2013, 2014代碼類似)
plt.style.use('ggplot')
plt.pie(x=data_Segment_Year_Sales['Segment_year_prop'].loc[data_Segment_Year_Sales['year']==2011],
? ? ? labels=data_Segment_Year_Sales['Segment'].loc[data_Segment_Year_Sales['year']==2011],
? ? ? explode=(0.05, 0, 0), autopct='%.1f%%', textprops={'fontsize':15})
plt.title('2011年客戶占比')
#不同類型客戶每年人數(shù)
sns.barplot(x='year', y='Segment_Year_count', hue='Segment', data=data_Segment_Year_Sales)
#不同類型客戶每年銷售額
sns.barplot(x='year', y='Sales', hue='Segment', data=data_Segment_Year_Sales)
分析:?從上我們可以看到,超過一半的客戶為普通消費(fèi)者consumer柴淘,且每類客戶每年均在保持增長的趨勢迫淹,客戶結(jié)構(gòu)還是非常不錯(cuò)的秘通,其中corporate和home office維系的好,一般屬于穩(wěn)定長期客戶敛熬,還可以有增長的空間
5.2用戶數(shù)量
#各年各月的新客戶數(shù)
data2=data.drop_duplicates(subset=['Customer ID'])
new_customer=data2.groupby(by=['year', 'month']).size()
new_customer=new_customer.reset_index()
sale_year_month=pd.pivot_table(new_customer, index='month', columns='year', values=0)
sale_year_month
def Segment_Year_Customer_count(x):
? ? for i in data['Segment'].drop_duplicates():
? ? ? ? for j in data['year'].drop_duplicates():
? ? ? ? ? ? if x[0]==i and x[1]==j:
? ? ? ? ? ? ? ? return (data.loc[(data['Segment']==i) & (data['year']==j)].drop_duplicates(subset=['Customer ID'], keep='first')['Customer ID'].count())
#可視化
sale_year_month.plot(title='各年各月的新客戶數(shù)')
分析: 因?yàn)閿?shù)據(jù)是從2011年開始統(tǒng)計(jì)肺稀,在2011年第一次消費(fèi)的消費(fèi)者都被定位新客戶,所以2011可以忽略不看应民。但根據(jù)圖表可以看出话原,從2012年開始到2014年總體看,每一年的新增客戶數(shù)還是逐年減少的趨勢诲锹,可以看出該超市對(duì)保持老用戶是有效的繁仁,超市的運(yùn)營狀況較為穩(wěn)定。但是归园,新客戶獲取率比較低黄虱,可以不定期的進(jìn)行主動(dòng)推廣營銷,從而增加新客戶數(shù)庸诱。
5.3用戶質(zhì)量
#統(tǒng)計(jì)每月購買次數(shù)
pivoted_counts=data.pivot_table(index='Customer ID',
? ? ? ? ? ? ? ? ? ? ? ? ? ? columns='year_month',
? ? ? ? ? ? ? ? ? ? ? ? ? ? values='Order Date',
? ? ? ? ? ? ? ? ? ? ? ? ? ? aggfunc='count').fillna(0)
pivoted_counts
df_purchase=pivoted_counts.applymap(lambda x: 1 if x>0 else 0)
df_purchase.head()
#定義狀態(tài)函數(shù)并進(jìn)行標(biāo)記
def active_status(data):
? ? status = []
? ? for i in range(48):
? ? ? ? if data[i] == 0:
? ? ? ? ? ? if len(status)>0:
? ? ? ? ? ? ? ? if status[i-1] == "unreg":
? ? ? ? ? ? ? ? ? ? status.append("unreg")#未注冊客戶
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? status.append("unactive")#不活躍用戶
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? status.append("unreg")
? ? ? ? #若本月消費(fèi)了
? ? ? ? else:
? ? ? ? ? ? if len(status) == 0:
? ? ? ? ? ? ? ? status.append("new")#新用戶
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? if status[i-1] == "unactive":
? ? ? ? ? ? ? ? ? ? status.append("return")#回歸用戶
? ? ? ? ? ? ? ? elif status[i-1] == "unreg":
? ? ? ? ? ? ? ? ? ? status.append("new")
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? status.append("active")
? ? return pd.Series(status)?
purchase_stats = df_purchase.apply(active_status,axis =1)
purchase_stats.head()
#新用戶, 回歸用戶, 活躍用戶情況圖
purchase_stat_ct=purchase_stats.replace('unreg', np.NaN).apply(lambda x:pd.value_counts(x))
purchase_stat_ct.fillna(0).T.plot.area()
分析:?從上可以發(fā)現(xiàn)活躍客戶捻浦、新客戶和回歸客戶,每年呈一定的規(guī)律起伏桥爽,這可能和年終年末大促有關(guān)朱灿,需要更多數(shù)據(jù)進(jìn)行佐證;同時(shí)可以發(fā)現(xiàn)新客數(shù)量每年均在減少钠四,說明該商家新客獲取率較低盗扒,如果能在新客戶獲取上取得突破,會(huì)給商家?guī)砗艽蟮脑鲩L空間形导。
#復(fù)購率計(jì)算指標(biāo):? 用戶在該月購買過一次以上算復(fù)購
purchase_r = pivoted_counts.applymap(lambda x :1 if x>1 else np.NaN if x==0 else 0)
(purchase_r.sum()/purchase_r.count()).plot()
#回購率: 在該月購買過, 在下月也購買時(shí)計(jì)入回購
def purchase_back(data):
? ? status=[]
? ? for i in range(47):
? ? ? ? if data[i] ==1:
? ? ? ? ? ? if data[i+1] == 1:
? ? ? ? ? ? ? ? status.append(1)
? ? ? ? ? ? if data[i+1] == 0:
? ? ? ? ? ? ? ? status.append(0)
? ? ? ? else:
? ? ? ? ? ? status.append(np.NaN)
? ? status.append(np.NaN)
? ? return status
purchase_b = df_purchase.apply(purchase_back,axis =1,result_type='expand')
(purchase_b.sum()/purchase_b.count()).plot()
分析:?從上可以發(fā)現(xiàn)復(fù)購率基本大于0.525,且呈總體上升趨勢习霹,說明客戶忠誠度高朵耕,回購率在年中年末呈峰形態(tài),可能與商家折扣活動(dòng)或節(jié)日有關(guān)淋叶。
#RFM模型
????????用戶精細(xì)化運(yùn)營分類阎曹,通過各類運(yùn)營手段提高不同類型的用戶在產(chǎn)品中的活躍度、留存率和付費(fèi)率煞檩。如何將用戶從一個(gè)整體拆分成特征明顯的群體決定了運(yùn)營的成敗处嫌。在用戶價(jià)值領(lǐng)域,最具有影響力并得到實(shí)證驗(yàn)證的理論與模型有:用戶終生價(jià)值理論斟湃、用戶價(jià)值金字塔模型熏迹,策論評(píng)估矩陣分析法和RFM客戶價(jià)值分析模型等。本文使用RFM用戶分群模型模型對(duì)用戶進(jìn)行分類凝赛。RFM定義如下:
R(Recency):客戶最近一次交易時(shí)間的間隔注暗。R值越大坛缕,表示客戶交易發(fā)生的日期越久,反之則表示客戶交易發(fā)生的日期越近捆昏。
F(Frequency):客戶在最近一段時(shí)間內(nèi)交易的次數(shù)赚楚。F值越大,表示客戶交易越頻繁骗卜,反之則表示客戶交易不夠活躍宠页。
M(Monetary):客戶在最近一段時(shí)間內(nèi)交易的金額。M值越大寇仓,表示客戶價(jià)值越高举户,反之則表示客戶價(jià)值越低。
RFM模型是衡量用戶價(jià)值和用戶創(chuàng)利能力的經(jīng)典工具焚刺,依托于用戶最近一次購買時(shí)間敛摘、消費(fèi)頻次以及消費(fèi)金額。在應(yīng)用RFM模型時(shí)乳愉,要有用戶最基礎(chǔ)的交易數(shù)據(jù)兄淫,至少包含用戶ID,交易金額蔓姚,交易時(shí)間三個(gè)字段捕虽。根據(jù)R,F(xiàn)坡脐,M這三個(gè)維度泄私,我們可以將客戶分為以下8種類型:
在這個(gè)表中,我們將每個(gè)維度都分為高低兩種情況备闲,進(jìn)而將客戶群體劃分為8種類型晌端,而這8種類型又可以劃分成A、B恬砂、C三個(gè)等級(jí)咧纠。接下來對(duì)R、F和M進(jìn)行計(jì)算泻骤,步驟如下:
#排序函數(shù)
def order_sort(group):
? ? return group.sort_values(by='Order Date')[-1:]
#按數(shù)據(jù)將客戶分組
data_group=data2.groupby(by='Customer ID', as_index=False) #as_index = False是“SQL風(fēng)格”的分組輸出漆羔。
#將每個(gè)分組對(duì)象的數(shù)據(jù)排序, 并取出日期最大的數(shù)據(jù)
data_rfm=data_group.apply(order_sort)
data_rfm
data_rfm['R']=-(data_rfm['Order Date']-data_rfm['Order Date'].max())/np.timedelta64(1, 'D')#np.timedelta64()函數(shù), 用于控制時(shí)間間隔,間隔多少年/月/天/時(shí)/分/秒/
data_rfm['F']=data_group.size().values
data_rfm['M']=data_group.sum()['Sales'].values
data_rfm
data_rfm[['R', 'F', 'M']].apply(lambda x:x-x.mean())#基于平均值比較
def rfm_func(x):
? ? level=x.apply(lambda x:'1' if x>0 else '0')
? ? level=level.R+level.F+level.M
? ? d={'111':'重要價(jià)值客戶',
? ? '101':'重要發(fā)展客戶',
? ? '011':'重要保持客戶',
? ? '001':'重要挽留客戶',
? ? '110':'一般價(jià)值客戶',
? ? '100':'一般發(fā)展客戶',
? ? '010':'一般保持客戶',
? ? '000':'一般挽留客戶'
? ? }
? ? result=d[level]
? ? return result
data_rfm['label']=data_rfm[['R', 'F', 'M']].apply(lambda x:x-x.mean()).apply(rfm_func, axis=1)
data_rfm
size=data_rfm.groupby(['label']).size().to_frame()
size['rfm_pct']=["%.2f%%"%(i/sum(size.values)*100) for i in size.values]
size
#對(duì)重要價(jià)值客戶和重要保持客戶進(jìn)行可視化
data_rfm.loc[data_rfm.label=='重要價(jià)值客戶', 'color']='g'
data_rfm.loc[data_rfm.label=='重要發(fā)展客戶', 'color']='b'
data_rfm.loc[data_rfm.label=='重要保持客戶' , 'color']='gray'
data_rfm.loc[data_rfm.label=='重要挽留客戶' , 'color']='gray'
data_rfm.loc[data_rfm.label=='一般價(jià)值客戶' , 'color']='gray'
data_rfm.loc[data_rfm.label=='一般發(fā)展客戶' , 'color']='gray'
data_rfm.loc[data_rfm.label=='一般保持客戶' , 'color']='gray'
data_rfm.loc[data_rfm.label=='一般挽留客戶' , 'color']='gray'
data_rfm.plot.scatter('F', 'R', c=data_rfm.color)
分析:?根據(jù)RMF模型分類出8種客戶狱掂,根據(jù)他們對(duì)平臺(tái)的貢獻(xiàn)度排序如下:一般挽留客戶→一般發(fā)展客戶→一般保持客戶→一般價(jià)值客戶→重要挽留客戶→重要發(fā)展客戶→重要保持客戶→重要價(jià)值客戶演痒。
????????通過RFM識(shí)別不同的客戶群體,能夠衡量客戶價(jià)值和客戶利潤創(chuàng)收能力趋惨,可以指定個(gè)性化的溝通和營銷服務(wù)鸟顺,為更多的營銷決策提供有力支持,為企業(yè)創(chuàng)造更大的利益器虾。
? ??????從統(tǒng)計(jì)結(jié)果中看诊沪,該平臺(tái)重要價(jià)值客戶占總體2.64%,說明該公司已經(jīng)沉淀了一批優(yōu)良客戶养筒,但這個(gè)比例較小。但有41.51%的重要保持客戶端姚,這批客戶是曾高頻購買且消費(fèi)金額大的客戶晕粪,但是這批客戶近期沒有成交行為說明已經(jīng)有流失傾向,這批客戶需要著重關(guān)注渐裸。另外一般發(fā)展用戶也占了26.48%的比例巫湘,說明在用戶新增的階段做的還不錯(cuò),但是一般挽留客戶也占了24.4%昏鹃,一般挽留客戶代表已經(jīng)流失的客戶尚氛,說明客戶保持方便做的比較差。這組數(shù)據(jù)說明了這個(gè)平臺(tái)整體已經(jīng)處于客戶流失的階段洞渤,用戶整體活躍行為已經(jīng)降低阅嘶,需要維護(hù)現(xiàn)有忠誠的客戶的同時(shí),也要花精力在新用戶往重要價(jià)值客戶的轉(zhuǎn)化上载迄。
如需轉(zhuǎn)載, 請注明出處.?