版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
模塊七電商客戶行為分析Python數(shù)據(jù)分析與可視化典型項(xiàng)目實(shí)戰(zhàn)(微課版)【任務(wù)描述】Excel文件“UserBehavior.xlsx”共有757565行、10列數(shù)據(jù),每一行表示一條客戶行為,列名稱及說(shuō)明如表7-1所示?!救蝿?wù)7-1】以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為【任務(wù)描述】針對(duì)該數(shù)據(jù)集完成以下數(shù)據(jù)分析與可視化操作。(1)日期維的客戶行為分析。(2)時(shí)間段的客戶行為分析。(3)統(tǒng)計(jì)與分析每日活躍客戶、每日購(gòu)買(mǎi)客戶數(shù)及購(gòu)買(mǎi)客戶率。(4)分析客戶活躍天數(shù)分布情況。(5)每日新增客戶分析。(6)客戶留存分析。(7)復(fù)購(gòu)分析。(8)RFM模型分析。(9)轉(zhuǎn)化路徑分析(漏斗分析)。(10)商品銷售分析?!救蝿?wù)實(shí)現(xiàn)】在JupyterNotebook開(kāi)發(fā)環(huán)境中創(chuàng)建tc07-01.ipynb,然后在單元格中編寫(xiě)代碼并輸出對(duì)應(yīng)的結(jié)果?!救蝿?wù)7-1】以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為1.導(dǎo)入模塊導(dǎo)入通用模塊的代碼詳見(jiàn)“本書(shū)導(dǎo)學(xué)”,導(dǎo)入其他模塊的代碼如下:importdatetimefrompyechartsimportchartsaspycimportwarnings#忽略警告warnings.filterwarnings("ignore")#繪圖的字體默認(rèn)設(shè)置fontdict={'fontsize':14,'horizontalalignment':'center'}以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為2.提取數(shù)據(jù)columns=['客戶ID','商品ID','商品類型ID','行為類型','時(shí)間戳','性別','城市','訪問(wèn)設(shè)備','價(jià)格','數(shù)量']#讀取數(shù)據(jù)df=pd.read_excel(r'data\UserBehavior.xlsx',names=columns,converters={'時(shí)間戳':int})data=df.copy()data.head()以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為3.?dāng)?shù)據(jù)處理查看數(shù)據(jù)集的基本信息()數(shù)據(jù)去重處理data.drop_duplicates(inplace=True)時(shí)間戳的轉(zhuǎn)化處理data["time1"]=pd.to_datetime(data["時(shí)間戳"],unit='s')data["日期"]=data["time1"].dt.date#data["月"]=data["time1"].dt.monthdata["年_月"]=data["time1"].apply(lambdax:x.strftime('%Y-%m'))data["時(shí)"]=data["time1"].dt.hour以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為以下代碼也能實(shí)現(xiàn)時(shí)間戳的轉(zhuǎn)化處理。data["time1"]=data["時(shí)間戳"].apply(lambdax:datetime.datetime.fromtimestamp(x))data["月"]=data["時(shí)間戳"].apply(lambdax:int(datetime.datetime.fromtimestamp(x).strftime("%Y%m")))data["日期"]=data["時(shí)間戳"].apply(lambdax:datetime.datetime.fromtimestamp(x).strftime("%Y-%m-%d"))data["時(shí)"]=data["time1"].apply(lambdax:x.hour)觀察有沒(méi)有缺失值data.isnull().sum()觀察數(shù)據(jù)有沒(méi)有異常值data.describe()以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為4.日期維的客戶行為分析計(jì)算各種行為的數(shù)量pd.set_option('float_format',lambdax:'%.2f'%x)type_value=data.行為類型.value_counts()type_value計(jì)算7天內(nèi)各類客戶行為的總計(jì)數(shù)、每日平均操作計(jì)數(shù)、每個(gè)客戶平均操作數(shù)#統(tǒng)計(jì)7天總客戶量unique_user=data.客戶ID.nunique()#計(jì)算7天內(nèi)各類客戶行為的總計(jì)數(shù)、每日平均操作計(jì)數(shù)、每個(gè)客戶平均操作數(shù)type_df=pd.DataFrame([type_value,type_value/7,type_value/unique_user],index=['total','avg_day','avg_user'])type_df以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為按天分析pv/uv,觀察其訪問(wèn)走勢(shì)#按天分析pv/uv,觀察其訪問(wèn)走勢(shì)all_puv=pd.pivot_table(data,index=['日期'],values='客戶ID',aggfunc='count')#計(jì)算每天的訪問(wèn)數(shù)量uv=data[['客戶ID','日期']].drop_duplicates()['日期'].value_counts()all_puv=all_puv.join(uv)all_puv.columns=['pv','uv']all_puv['avg_pv']=all_puv['pv']/all_puv['uv']#avg_pv是指按天計(jì)算的pv與uv的值all_puv繪制pv、uv、avg_pv折線圖x=all_puv.indexfig,axes=plt.subplots(1,3,figsize=(18,3))axes[0].plot(x,all_puv['pv'],color='b',marker='o')axes[1].plot(x,all_puv['uv'],color='g',marker='s')axes[2].plot(x,all_puv['avg_pv'],color='r',marker='d')axes[0].set_title('pv')axes[1].set_title('uv')axes[2].set_title('avg_pv')axes[0].set_xticklabels(x,rotation=30)axes[1].set_xticklabels(x,rotation=30)axes[2].set_xticklabels(x,rotation=30)plt.show()以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為圖7-1pv、uv、avg_pv折線圖按天分析pv/uv,觀察每種行為類型的點(diǎn)擊量#按天分析pv/uv,觀察每種行為類型的點(diǎn)擊量pv=pd.pivot_table(data,index=["日期"],columns=["行為類型"],values="客戶ID",aggfunc="count")pv["all"]=pv.sum(axis=1)pv以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為繪制每日客戶行為分析折線圖plt.figure(figsize=(12,5))plt.plot(pv.index,pv["all"],color="g")plt.plot(pv.index,pv["pv"],color="r")plt.plot(pv.index,pv["cart"],color="b")plt.plot(pv.index,pv["buy"],color="c")plt.plot(pv.index,pv["fav"],color="y")plt.xlabel("日期",fontsize=12)plt.ylabel("數(shù)量",fontsize=12)plt.title("客戶行為分析",fontsize=16)plt.xticks(rotation=30)plt.legend(["all","pv","cart","buy","fav"],loc='upperleft',fontsize=12)plt.show()圖7-2每日客戶行為分析折線圖之一掃描二維碼在線瀏覽電子活頁(yè)7-1“繪制每日客戶行為分析折線圖方法2”中的代碼及繪制的圖形。以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為5.時(shí)間段的客戶行為分析創(chuàng)建數(shù)據(jù)集hours_df#根據(jù)時(shí)間段分組groupby_hour=df.groupby(by='時(shí)')hours=[xforxinrange(0,24)]#創(chuàng)建數(shù)據(jù)集hours_df=pd.DataFrame(data=None,index=hours,columns=['pv','cart','fav','buy'])#填充數(shù)據(jù)forhinhours:hours_df.loc[h]=groupby_hour.get_group(h).行為類型.value_counts()hours_df.head()繪制每日不同時(shí)間段不同行為客戶數(shù)折線圖掃描二維碼在線瀏覽電子活頁(yè)7-2“繪制每日不同時(shí)間段不同行為客戶數(shù)折線圖”中的代碼及繪制的圖形。以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為繪制按小時(shí)統(tǒng)計(jì)客戶訪問(wèn)量的柱形圖hour_pv=data["時(shí)"].value_counts()print(hour_pv)hour_pv=hour_pv.reset_index().rename(columns={'index':'hour','時(shí)':'pv'})plt.figure(figsize=(12,3))plt.bar(hour_pv["hour"],hour_pv["pv"])plt.xlabel("小時(shí)",fontsize=12)plt.ylabel("訪問(wèn)量pv",fontsize=12)plt.title("按小時(shí)統(tǒng)計(jì)客戶訪問(wèn)量",fontsize=16)plt.show()圖7-3按小時(shí)統(tǒng)計(jì)客戶訪問(wèn)量的柱形圖以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為6.統(tǒng)計(jì)與分析每日活躍客戶、每日購(gòu)買(mǎi)客戶數(shù)及購(gòu)買(mǎi)客戶率創(chuàng)建數(shù)據(jù)集dates_df#根據(jù)日期分組groupby_date=df.groupby(by=df.日期)dates=sorted(list(dict(df['日期'].value_counts()).keys()))#創(chuàng)建數(shù)據(jù)集dates_df=pd.DataFrame(data=None,index=dates,columns=['pv','cart','fav','buy'])#填充數(shù)據(jù)fordindates:dates_df.loc[d]=groupby_date.get_group(d).行為類型.value_counts()#加上星期數(shù)據(jù)dates_df['weekday']=[datetime.datetime.isoweekday(datetime.date(x.year,x.month,x.day))forxindates_df.index]dates_df以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為統(tǒng)計(jì)與分析每日活躍客戶、每日購(gòu)買(mǎi)客戶數(shù)及購(gòu)買(mǎi)客戶率#定義活躍客戶active_user_standard=3#每日活躍客戶daufordindates:dates_df.loc[d,'uv']=groupby_date.get_group(d).客戶ID.nunique()dates_df.loc[d,'dau']=(groupby_date.get_group(d).groupby(by='客戶ID').size()>active_user_standard).value_counts()[True]#活躍客戶比例au_ratedates_df['au_rate']=dates_df['dau']/dates_df['uv']#每日購(gòu)買(mǎi)客戶數(shù)buyerdates_df['buyer']=df[df['行為類型']=='buy'].groupby(by=['日期','客戶ID']).size().count(level=0)#每日購(gòu)買(mǎi)客戶數(shù)占總客戶比例buyer_ratedates_df['buyer_rate']=dates_df['buyer']/dates_df['uv']#總客戶人均單量dates_df['總客戶人均單量']=dates_df['buy']/dates_df['uv']#購(gòu)買(mǎi)客戶人均單量dates_df['購(gòu)買(mǎi)客戶人均單量']=dates_df['buy']/dates_df['buyer']dates_df以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為不考慮2022年7月4日的情況,可以得出以下結(jié)論。每日客戶中活躍客戶比例保持在68%以上,可能是活躍客戶的定義要求不夠高造成的。總客戶人均單量在0.25~0.30,可以看到7月8日開(kāi)始下降明顯,可能是活動(dòng)吸引來(lái)更多的客戶,但這些客戶購(gòu)買(mǎi)欲望不強(qiáng)。購(gòu)買(mǎi)客戶人均單量在1.40~1.53,在7月6日有所下降,單數(shù)較少,可能因?yàn)橛谢顒?dòng)所以集中購(gòu)買(mǎi)。以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為7.分析客戶活躍天數(shù)分布情況獲取客戶活躍天數(shù)分布數(shù)據(jù)#客戶每日進(jìn)行多少次操作user_date_act=df[['客戶ID','日期','行為類型']].groupby(by=['客戶ID','日期']).count()user_date_act.columns=['操作次數(shù)']#每日的操作次數(shù)高于3次的稱為活躍客戶,每個(gè)客戶的活躍天數(shù)有多少user_active_days_df=user_date_act[user_date_act['操作次數(shù)']>3].count(level=0)#每日不同操作次數(shù)的活躍客戶數(shù)量分布user_act_days_dist=user_active_days_df['操作次數(shù)'].value_counts().sort_index()繪制活躍客戶每日操作次數(shù)分布柱形圖#plt.bar(range(len(user_act_days_dist)),user_act_days_dist)#plt.bar(user_act_days_dist.index,user_act_days_dist)plt.figure(figsize=(10,5))x,y=user_act_days_dist.index,user_act_days_dist以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為plt.bar(x,y,width=0.6)fora,binzip(x,y):plt.text(a,b,'%.0f'%b,ha='center',va='bottom',fontsize=10)plt.xlabel("操作次數(shù)",fontsize=12)plt.ylabel("客戶數(shù)量",fontsize=12)plt.title("活躍客戶每日操作次數(shù)分布",fontsize=12)plt.show()8.每日新增客戶分析統(tǒng)計(jì)新增客戶數(shù)量new_visitor=data[["客戶ID","日期"]].groupby("客戶ID").min()["日期"].value_counts().reset_index()new_visitor.columns=["日期","新客戶"]new_visitor以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為繪制每日新增客戶數(shù)量柱形圖掃描二維碼在線瀏覽電子活頁(yè)7-3“繪制每日新增客戶數(shù)量柱形圖”中的代碼及繪制的圖形。9.客戶留存分析重新復(fù)制數(shù)據(jù)集并獲取所需的日期數(shù)據(jù)df1=df.copy()df1["time1"]=pd.to_datetime(df1["時(shí)間戳"],unit='s')df1["日期"]=df1["時(shí)間戳"].apply(lambdax:datetime.datetime.fromtimestamp(x).strftime("%Y-%m-%d"))df1["年-月"]=df1["time1"].apply(lambdax:x.strftime('%Y-%m'))df1["時(shí)"]=df1["time1"].apply(lambdax:x.hour)deldf1["time1"]df1.head()以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為定義n日留存率計(jì)算函數(shù)n日留存率計(jì)算函數(shù)cal_retention()中的參數(shù)data傳入的為客戶ID和登錄日期,start_date為起始時(shí)間,其格式為%Y-%m-%d。n為留存n日,不傳入start_date和n時(shí),則表示計(jì)算所有留存。掃描二維碼在線瀏覽電子活頁(yè)7-4“定義n日留存率計(jì)算函數(shù)”中的代碼及繪制的圖形。調(diào)用cal_retention()函數(shù)計(jì)算留存率例如,計(jì)算2022年7月5日的3日留存率,其返回結(jié)果為:['2022-07-05','2022-07-08',7606,5977,0.7858]。cal_retention(df1[["客戶ID","日期"]],"2022-07-05",3)輸出結(jié)果:['2022-07-05','2022-07-08',7606,5977,0.7858]以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為傳入數(shù)據(jù)集調(diào)用cal_retention()函數(shù)計(jì)算留存人數(shù)和留存率retention=cal_retention(df1[["客戶ID","日期"]])展示留存率pd.pivot_table(retention,index=["開(kāi)始日期"],columns=["留存日期"],values="留存率",aggfunc="sum",fill_value=0)展示留存人數(shù)pd.pivot_table(retention,index=["開(kāi)始日期"],columns=["留存日期"],values="留存人數(shù)",aggfunc="sum",fill_value=0)以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為10.復(fù)購(gòu)分析重復(fù)購(gòu)買(mǎi)率是指在單位時(shí)間段內(nèi)再次購(gòu)買(mǎi)人數(shù)占總購(gòu)買(mǎi)人數(shù)的比率。例如在一個(gè)月內(nèi),有100個(gè)客戶完成交易,其中有20個(gè)是回頭客,則重復(fù)購(gòu)買(mǎi)率為20%。這里的回頭客會(huì)按天去重,即一個(gè)客戶一天產(chǎn)生多筆交易,也只算一次購(gòu)買(mǎi),只有在統(tǒng)計(jì)周期內(nèi)另外一天也有購(gòu)買(mǎi)的客戶才是回頭客。data_buy=df1[df1.行為類型=="buy"][["客戶ID","日期"]].drop_duplicates()["客戶ID"].value_counts().reset_index()data_buy.columns=["客戶ID","購(gòu)買(mǎi)次數(shù)"]#復(fù)購(gòu)率計(jì)算rebuy_rate=round(len(data_buy[data_buy.購(gòu)買(mǎi)次數(shù)>=2])/len(data_buy),4)print("復(fù)購(gòu)率為:",round(rebuy_rate*100,2),"%")#輸出結(jié)果為:42.06%#購(gòu)買(mǎi)的總?cè)藬?shù)buy_user=len(data_buy)#購(gòu)買(mǎi)次數(shù)的人數(shù)分布buy_freq=data_buy.購(gòu)買(mǎi)次數(shù).value_counts().reset_index()buy_freq.columns=[["購(gòu)買(mǎi)次數(shù)","人數(shù)"]]buy_freq["人數(shù)占比"]=buy_freq["人數(shù)"]/buy_userbuy_freq輸出結(jié)果:復(fù)購(gòu)率為:42.06%以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為11.RFM模型分析RFM模型由最近一次消費(fèi)(Recency)、消費(fèi)頻次(Frequency)、消費(fèi)金額(Monetary)3個(gè)要素構(gòu)成,這3個(gè)要素構(gòu)成了數(shù)據(jù)分析的一種指標(biāo)。RFM模型分析的前提條件為:過(guò)去所有交易金額較多的客戶,比交易金額較少的客戶,更有消費(fèi)積極性。交易頻率較高的客戶比交易頻率較低的客戶,更有可能再次發(fā)生交易行為;最近有過(guò)交易行為的客戶,再次發(fā)生交易的可能性高于最近沒(méi)有交易行為的客戶;以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為計(jì)算銷售金額df1["金額"]=df1["價(jià)格"]*df1["數(shù)量"]計(jì)算間隔天數(shù)、消費(fèi)頻次、消費(fèi)金額取數(shù)規(guī)則為:最近一次消費(fèi)的時(shí)間取最大,消費(fèi)頻次根據(jù)次數(shù)統(tǒng)計(jì),消費(fèi)金額求平均值統(tǒng)計(jì)。RFM_date=df1[df1.行為類型=="buy"][["客戶ID","日期"]].groupby("客戶ID").max()RFM_F=df1[df1.行為類型=="buy"][["客戶ID","行為類型"]].groupby("客戶ID").count()RFM_M=df1[df1.行為類型=="buy"][["客戶ID","金額"]].groupby("客戶ID").mean()RFM=RFM_date.join(RFM_F).join(RFM_M)#RFM模型計(jì)算的日期為2022-07-10end_date=datetime.datetime.strptime("2022-7-10","%Y-%m-%d")#間隔天數(shù)計(jì)算RFM["days"]=RFM["日期"].apply(lambdax:(end_date-datetime.datetime.strptime(x,"%Y-%m-%d")).days)RFM=RFM[["days","行為類型","金額"]]RFM.columns=["間隔天數(shù)","消費(fèi)頻次","消費(fèi)金額"]RFM.head()以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為定義根據(jù)最近一次交易間隔天數(shù)計(jì)算得分的函數(shù)recency()defrecency(x):ifx<=2:return5elifx==3:return4elifx==4:return3elifx==5:return2elifx>=6:return1定義根據(jù)消費(fèi)次數(shù)計(jì)算得分的函數(shù)frequency()deffrequency(x):ifx>=8:return5elif(x>=6)&(x<8):return4elif(x>=4)&(x<6):return3elif(x>=2)&(x<4):return2elif(x>=0)&(x<2):return1定義根據(jù)消費(fèi)金額計(jì)算得分的函數(shù)monetary()defmonetary(x):ifx>=300:return5elif(x>=200)&(x<300):return4elif(x>=100)&(x<200):return3elif(x>=50)&(x<100):return2elif(x>=0)&(x<50):return1以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為根據(jù)打分規(guī)則對(duì)數(shù)據(jù)進(jìn)行處理RFM["R_S"]=RFM["間隔天數(shù)"].apply(recency)RFM["F_S"]=RFM["消費(fèi)頻次"].apply(frequency)RFM["M_S"]=RFM["消費(fèi)金額"].apply(monetary)RFM["RFM"]=RFM.apply(lambdax:int(x.R_S*100+x.F_S*10+x.M_S),axis=1)RFM.head()以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為12.轉(zhuǎn)化路徑分析(漏斗分析)轉(zhuǎn)化路徑定義為:pv(瀏覽商品詳情頁(yè))→cart(收藏商品和將商品加入購(gòu)物車)→buy(購(gòu)買(mǎi)商品)。計(jì)算轉(zhuǎn)化路徑中瀏覽商品評(píng)情頁(yè)、收藏商品和將商品加入購(gòu)物車、購(gòu)買(mǎi)商品環(huán)節(jié)的人數(shù)#轉(zhuǎn)化分析data_behavior=df1[df1.行為類型!="fav"]["行為類型"].value_counts().reset_index().rename(columns={"index":"環(huán)節(jié)","行為類型":"人數(shù)"})data_behavior根據(jù)各環(huán)節(jié)的人數(shù)繪制各環(huán)節(jié)轉(zhuǎn)化率的漏斗圖count_pv=data_behavior['人數(shù)'][0].astype('float')count_pv_fav=df1[df1.行為類型=="fav"]["行為類型"].value_counts().loc['fav'].astype('float')count_pv_cart=data_behavior['人數(shù)'][1].astype('float')count_cart_buy=data_behavior['人數(shù)'][2].astype('float')以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為type_data_pair=[('瀏覽',count_pv),('收藏和加入購(gòu)物車',count_pv_fav+count_pv_cart),('購(gòu)買(mǎi)',count_cart_buy)]funnel=(Funnel().add('',data_pair=type_data_pair,gap=2,label_opts=opts.LabelOpts(position='top'),tooltip_opts=opts.TooltipOpts(is_show=True)).set_global_opts(title_opts=opts.TitleOpts(title='各環(huán)節(jié)的轉(zhuǎn)化率',subtitle='瀏覽-收藏和加入購(gòu)物車-購(gòu)買(mǎi)')))funnel.render_notebook()計(jì)算單一環(huán)節(jié)的轉(zhuǎn)化率cart_ratio=count_pv_cart/count_pvprint('加入購(gòu)物車轉(zhuǎn)化率為:%.2f%%'%(cart_ratio*100))buy_ratio=count_cart_buy/count_pv_cartprint('購(gòu)買(mǎi)轉(zhuǎn)化率為:%.2f%%'%(buy_ratio*100))輸出結(jié)果:加入購(gòu)物車轉(zhuǎn)化率為:6.28%購(gòu)買(mǎi)轉(zhuǎn)化率為:34.14%以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為在數(shù)據(jù)集中添加“單一環(huán)節(jié)轉(zhuǎn)化率”列temp1=np.array(data_behavior['人數(shù)'][1:])temp2=np.array(data_behavior['人數(shù)'][0:-1])print(temp1,temp2)#計(jì)算單一環(huán)節(jié)轉(zhuǎn)化率single_convs=temp1/temp2single_convs=list(single_convs)single_convs.insert(0,1)data_behavior['單一環(huán)節(jié)轉(zhuǎn)化率']=single_convsdata_behavior以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為繪制單一環(huán)節(jié)轉(zhuǎn)化率漏斗圖attrs=[a+":"+str(round(b,2))+"%"fora,binzip(data_behavior['環(huán)節(jié)'],data_behavior['單一環(huán)節(jié)轉(zhuǎn)化率']*100)]attr_value=[round(a,2)foraindata_behavior['單一環(huán)節(jié)轉(zhuǎn)化率']*100]funnel=Funnel()funnel.add("",[list(z)forzinzip(attrs,attr_value)],label_opts=opts.LabelOpts(position="inside"))funnel.set_global_opts(title_opts=
opts.TitleOpts(title="單一環(huán)節(jié)轉(zhuǎn)化率漏斗分析"))funnel.render_notebook()計(jì)算總體轉(zhuǎn)化率flag=data_behavior['人數(shù)'][0]data_behavior['總體轉(zhuǎn)化率']=
data_behavior['人數(shù)']/flagdata_behavior以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為繪制總體轉(zhuǎn)化率漏斗圖attrs=[a+":"+str(round(b,2))+"%"fora,binzip(data_behavior['環(huán)節(jié)'],data_behavior['總體轉(zhuǎn)化率']*100)]attr_value=[round(a,2)foraindata_behavior['總體轉(zhuǎn)化率']*100]funnel=Funnel()funnel.add("商品",[list(z)forzinzip(attrs,attr_value)],label_opts=opts.LabelOpts(position="inside"))funnel.set_global_opts(title_opts=opts.TitleOpts(title="總體轉(zhuǎn)化率漏斗分析"))funnel.render_notebook()輸出結(jié)果:輸出結(jié)果如圖7-7所示。以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為13.商品銷售分析分析銷售數(shù)量排前10位的商品buy_top=df1[df1.行為類型=="buy"]["商品ID"].value_counts().head(10)bar=Bar()bar.add_xaxis(buy_top.index.tolist())bar.add_yaxis("銷售數(shù)量排前10位的商品",buy_top.values.tolist())bar.set_global_opts(title_opts=opts.TitleOpts(title="銷售數(shù)量排前10位的商品"))bar.render_notebook()分析瀏覽次數(shù)排前10位的商品掃描二維碼在線瀏覽電子活頁(yè)7-5“繪制瀏覽次數(shù)排名前10位的商品柱形圖”中的代碼及繪制的圖形。以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為分析收藏次數(shù)排前10位的商品fav_top=df1[df1.行為類型=="fav"]["商品ID"].value_counts().head(10)bar=Bar()bar.add_xaxis(buy_top.index.tolist())bar.add_yaxis("收藏次數(shù)排名前10位的商品",buy_top.values.tolist())bar.set_global_opts(title_opts=opts.TitleOpts(title="收藏次數(shù)排名前10位的商品"))bar.render_notebook()以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為分析城市購(gòu)買(mǎi)力city_top=df1[df1.行為類型=="buy"][["城市","金額"]].groupby("城市").sum().sort_values("金額",ascending=False)bar=Bar()bar.add_xaxis(city_top.index.tolist())bar.add_yaxis("城市購(gòu)買(mǎi)力",[round(a,2)foraincity_top.金額])bar.render_notebook()分析不同性別的購(gòu)買(mǎi)力情況掃描二維碼在線瀏覽電子活頁(yè)7-6“繪制不同性別購(gòu)買(mǎi)力餅圖”中的代碼及繪制的圖形。以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為分析不同商品類型的銷售情況cat_top=df1[df1.行為類型=="buy"]["商品類型ID"].value_counts().head(10)bar=Bar()bar.add_xaxis(cat_top.index.tolist())bar.add_yaxis("銷售數(shù)量排前10位的商品類型",cat_top.values.tolist())bar.render_notebook()以行業(yè)常見(jiàn)指標(biāo)分析一周內(nèi)電商客戶行為本任務(wù)從4個(gè)方面分析客戶的行為,并且利用RFM模型對(duì)客戶進(jìn)行分類。對(duì)于高瀏覽量商品,可以將重心轉(zhuǎn)移至定價(jià)上,實(shí)行差異化定價(jià),以提高購(gòu)買(mǎi)數(shù)量;對(duì)于高購(gòu)買(mǎi)率商品,建議提高曝光率,結(jié)合多平臺(tái)宣傳,提高瀏覽量;對(duì)于明星商品,建議平臺(tái)給予側(cè)重,以保證持續(xù)的優(yōu)質(zhì)。01時(shí)間維度02消費(fèi)行為03客戶價(jià)值通過(guò)RFM模型分析得到的不同類型的客戶,并采取不同的激勵(lì)方案。04商品分析在客戶的休閑時(shí)間段,例如通勤時(shí)間7—10點(diǎn),午飯時(shí)間12—13點(diǎn),以及下班時(shí)間18—22點(diǎn)做促銷活動(dòng),以及進(jìn)行一些相關(guān)的營(yíng)銷,這樣能夠提高客戶購(gòu)買(mǎi)的轉(zhuǎn)化率。在高流失率環(huán)節(jié),給予引導(dǎo)與提示,提高轉(zhuǎn)化率。考慮在客戶發(fā)生首購(gòu)行為后,發(fā)放特殊優(yōu)惠,以提高復(fù)購(gòu)率。對(duì)于瀏覽量高的商品,要重點(diǎn)分析,優(yōu)化商品的推薦機(jī)制,讓客戶做到瀏覽即想購(gòu)買(mǎi)。利用RFM模型對(duì)客戶進(jìn)行分類【任務(wù)描述】現(xiàn)有兩個(gè)Excel文件——“df_short.xlsx”(記錄“客戶消費(fèi)信息”)和“df_label.xlsx”(記錄“客戶偏好特征”),包含京東電子商務(wù)網(wǎng)站74天的交易數(shù)據(jù)。其中“df_short.xlsx”文件有8列、55148行數(shù)據(jù),所有列都不存在數(shù)據(jù)缺失情況;“df_label.xlsx”文件有21列、49003行數(shù)據(jù),僅有5列數(shù)據(jù)完整,有16列數(shù)據(jù)存在缺失情況。數(shù)據(jù)集df_short中“type”列即“客戶行為類型”列,一共有5種客戶行為類型,編碼分別為1、2、3、4、5,且1的頻次最高,為49149,其次是4、5、3、2,頻次分別為3180、1188、931、700,可以認(rèn)定為1表示瀏覽、4表示收藏、5表示加入購(gòu)物車、3表示購(gòu)買(mǎi)、2表示評(píng)論。先對(duì)df_short和df_label兩個(gè)數(shù)據(jù)集進(jìn)行數(shù)據(jù)清洗,并對(duì)數(shù)據(jù)集進(jìn)行合并操作,數(shù)據(jù)集df_product_buy中增加“購(gòu)買(mǎi)數(shù)量”列。然后分別針對(duì)單個(gè)數(shù)據(jù)集df_short和連接數(shù)據(jù)集df_key_customers探析商品的瀏覽、收藏、加入購(gòu)物車、購(gòu)買(mǎi)、評(píng)論等客戶行為的變化趨勢(shì)。為什么會(huì)有這種趨勢(shì)?【任務(wù)7-2】京東客戶行為分析【任務(wù)描述】本任務(wù)涉及的商品大類的中英文對(duì)照如下所示。Food(食品)、Electronics(電子產(chǎn)品)、Clothes(服裝)、HouseholdElectricAppliance(家用電器)、BeautyMakeup(美容化妝品)、JewelryAccessories(珠寶配飾)、Furniture(家具)、MotherandInfant(母嬰產(chǎn)品)、OutdoorSports(戶外運(yùn)動(dòng)用品)。【任務(wù)實(shí)現(xiàn)】在JupyterNotebook開(kāi)發(fā)環(huán)境中創(chuàng)建tc07-02initialize.ipynb,然后在單元格中編寫(xiě)代碼并輸出對(duì)應(yīng)的結(jié)果。【任務(wù)7-2】京東客戶行為分析京東客戶行為分析1.?dāng)?shù)據(jù)清洗與合并導(dǎo)入模塊導(dǎo)入通用模塊的代碼詳見(jiàn)“本書(shū)導(dǎo)學(xué)”。讀取數(shù)據(jù)path=r'data\df_short.xlsx'data1=pd.read_excel(path)df_short=data1.copy()df_label=pd.read_excel(r'.\data\JD_labels.xlsx')刪除數(shù)據(jù)集中多余的列df_short.drop(df_short.columns[[0]],axis=1,inplace=True)df_label.drop(df_label.columns[[0]],axis=1,inplace=True)京東客戶行為分析刪除數(shù)據(jù)集中的重復(fù)記錄df_short=df_short.drop_duplicates(subset=None,keep='first',inplace=False)df_label=df_label.drop_duplicates(subset=None,keep='first',inplace=False)將清洗后的數(shù)據(jù)保存到指定文件中df_short.to_excel(r'data\df_product.xlsx')df_label.to_excel(r'data\df_consume.xlsx')驗(yàn)證兩個(gè)數(shù)據(jù)集中是否為同一時(shí)間段、同一批客戶的數(shù)據(jù)print(len(df_product['customer_id'].unique()))print(df_consume.shape[0])print(len(df_product['customer_id'].unique())==df_consume.shape[0])在數(shù)據(jù)集中添加“購(gòu)買(mǎi)數(shù)量”列buy_cnt=df_product.groupby(['customer_id','product_id']).agg({'date':'count'})buy_cnt.rename(columns={'date':'購(gòu)買(mǎi)數(shù)量'},inplace=True)buy_cnt.reset_index(inplace=True)buy_()輸出結(jié)果:4900349003True京東客戶行為分析合并buy_cnt和df_product1兩個(gè)數(shù)據(jù)集并指定新數(shù)據(jù)集的列順序df_product1=df_product.drop_duplicates(subset=['customer_id','product_id'],keep='first',inplace=False)df_product_buy=pd.merge(buy_cnt,df_product1,how='left',on=['customer_id','product_id'])df_product_buy=df_product_buy[['customer_id','product_id','type','shop_category','category','brand','date','購(gòu)買(mǎi)數(shù)量']]根據(jù)“customer_id”列合并df_product_buy和df_label兩個(gè)數(shù)據(jù)集df_product_consume=pd.merge(df_label,df_product_buy,on='customer_id',how='right')將合并后的數(shù)據(jù)集保存到指定的文件中df_product_buy.to_excel(r'data\df_product_buy.xlsx')df_product_consume.to_excel(r'data\df_product_consume.xlsx')京東客戶行為分析2.導(dǎo)入模塊導(dǎo)入通用模塊的代碼詳見(jiàn)“本書(shū)導(dǎo)學(xué)”。導(dǎo)入其他模塊的代碼如下:importmatplotlib.gridspecasgridspecsns.set(font='FangSong')3.讀取數(shù)據(jù)與數(shù)據(jù)預(yù)處理讀取數(shù)據(jù)集path=r'data\df_product.xlsx'data1=pd.read_excel(path,dtype={'customer_id':str,'product_id':str})()讀取數(shù)據(jù)集df_label中數(shù)據(jù)的代碼如下:data2=pd.read_excel(r'data\df_consume.xlsx',dtype={'customer_id':str})京東客戶行為分析刪除數(shù)據(jù)集中多余的列data1=data1.drop('Unnamed:0',axis=1)data1.head()復(fù)制數(shù)據(jù)集df_short=data1.copy()df_label=data2.copy()data2=data2.drop('Unnamed:0',axis=1)刪除數(shù)據(jù)集df_short中的重復(fù)記錄并查看數(shù)據(jù)集大小df_short=df_short.drop_duplicates(subset=None,keep='first',inplace=False)df_short.shape輸出結(jié)果:(55137,7)刪除數(shù)據(jù)集df_label中的重復(fù)記錄并查看數(shù)據(jù)集大小df_label=df_label.drop_duplicates(subset=None,keep='first',inplace=False)df_label.shape輸出結(jié)果:(49003,20)輸出結(jié)果:京東客戶行為分析查看數(shù)據(jù)集df_short中不重復(fù)的客戶的數(shù)量len(df_short['customer_id'].unique())4.針對(duì)單個(gè)數(shù)據(jù)集的客戶行為分析將表示客戶行為類型的數(shù)字轉(zhuǎn)換為字符action_map={1:'瀏覽',2:'評(píng)論',3:'購(gòu)買(mǎi)',4:'收藏',5:'加入購(gòu)物車'}df_short['type']=df_short['type'].map(action_map)df_short.head()輸出結(jié)果:49003統(tǒng)計(jì)各類客戶行為的數(shù)量df1=df_short.groupby('type')['customer_id'].count().reset_index()df1.columns=['客戶行為類型','數(shù)量']df1=df1.sort_values(by='數(shù)量',ascending=False)df1京東客戶行為分析繪制各類客戶行為數(shù)量柱形圖plt.figure(figsize=(8,6))sns.barplot(x=df1.客戶行為類型,y=df1.數(shù)量).set(title='各類客戶行為數(shù)量')plt.show()掃描二維碼在線瀏覽電子活頁(yè)7-7“繪制各類客戶行為數(shù)量柱形圖方法2”中的代碼及繪制的圖形。京東客戶行為分析針對(duì)數(shù)據(jù)集df_short繪制“瀏覽-收藏-加入購(gòu)物車-購(gòu)買(mǎi)-評(píng)論”轉(zhuǎn)化率漏斗圖funnel=(Funnel().add("type",[list(z)forzinzip(df_short.type.value_counts().index.tolist(),df_short.type.value_counts().tolist())],label_opts=opts.LabelOpts(position="outside",
formatter=":{c}(8gtvz8y%)"),).set_global_opts(title_opts=opts.TitleOpts(title='各環(huán)節(jié)的轉(zhuǎn)化率',subtitle='瀏覽-收藏-加入購(gòu)物車-購(gòu)買(mǎi)-評(píng)論')))funnel.render_notebook()京東客戶行為分析透視分析各類客戶行為每天的數(shù)量df_short.sort_values(by='date',ascending=True,inplace=True)查看數(shù)據(jù)集的時(shí)間分布情況的代碼如下:short.describe(datetime_is_numeric=True)透視分析各類客戶行為每天的數(shù)量的代碼如下:short_detail=pd.pivot_table(columns='type',index='date',data=short,values='customer_id',aggfunc=np.size)short_detail.head()京東客戶行為分析分析各類客戶行為的日變化趨勢(shì)plt.figure(figsize=(15,8))sns.lineplot(data=short_detail)plt.show()京東客戶行為分析查看有“購(gòu)買(mǎi)”行為的客戶IDusr_buy=df_short[df_short['type']=='購(gòu)買(mǎi)'].groupby(['date','customer_id']).count()['type'].reset_index()usr_buy.head()按客戶行為類型提取數(shù)據(jù)type1=df_short[df_short['type']=='瀏覽']#瀏覽type2=df_short[df_short['type']=='評(píng)論']#評(píng)論type3=df_short[df_short['type']=='購(gòu)買(mǎi)']#購(gòu)買(mǎi)type4=df_short[df_short['type']=='收藏']#收藏type5=df_short[df_short['type']=='加入購(gòu)物車']#加入購(gòu)物車使用多個(gè)子圖區(qū)域分析各類客戶行為的時(shí)間變化趨勢(shì)繪制瀏覽數(shù)量、購(gòu)買(mǎi)數(shù)量、收藏?cái)?shù)量與加入購(gòu)物車數(shù)量排前5位的商品小類柱形圖統(tǒng)計(jì)與匯聚每種商品小類的瀏覽數(shù)量、收藏?cái)?shù)量、加入購(gòu)物車數(shù)量與購(gòu)買(mǎi)數(shù)量京東客戶行為分析#統(tǒng)計(jì)每種商品小類的瀏覽數(shù)量browseData=pd.DataFrame(type1['category'].value_counts().sort_index())#統(tǒng)計(jì)每種商品小類的購(gòu)買(mǎi)數(shù)量buyData=pd.DataFrame(type3['category'].value_counts().sort_index())#統(tǒng)計(jì)每種商品小類的收藏?cái)?shù)量followData=pd.DataFrame(type4['category'].value_counts().sort_index())#統(tǒng)計(jì)每種商品小類的加入購(gòu)物車數(shù)量CartData=pd.DataFrame(type5['category'].value_counts().sort_index())behaviorData=pd.merge(browseData,followData,left_index=True,right_index=True,how='outer')behaviorData.columns=['瀏覽數(shù)量','收藏?cái)?shù)量']behaviorData=pd.merge(behaviorData,CartData,left_index=True,right_index=True,how='outer')behaviorData.columns=['瀏覽數(shù)量','收藏?cái)?shù)量','加入購(gòu)物車數(shù)量']behaviorData=pd.merge(behaviorData,buyData,left_index=True,right_index=True,how='outer')behaviorData.columns=['瀏覽數(shù)量','收藏?cái)?shù)量','加入購(gòu)物車數(shù)量','購(gòu)買(mǎi)數(shù)量']behaviorData.fillna(0,inplace=True)behaviorData.head()輸出結(jié)果:京東客戶行為分析分析瀏覽數(shù)量、加入購(gòu)物車數(shù)量、收藏?cái)?shù)量與購(gòu)買(mǎi)數(shù)量之間的相關(guān)關(guān)系behaviorData.corr()繪制各類客戶行為的數(shù)量相關(guān)關(guān)系的熱力圖plt.figure(figsize=(5,5),dpi=100)sns.heatmap(behaviorData.corr(),cmap='coolwarm')plt.show()各類客戶行為的占比分析type_dis=df_short['type'].value_counts().reset_index()type_dis['rate']=(type_dis['type']/type_dis['type'].sum()).round(3)type_dis=type_dis.rename(columns={'index':'客戶行為類型','type':'累計(jì)數(shù)量','rate':'占比'})type_dis.style.bar(color='red',subset=['占比'])京東客戶行為分析5.查看數(shù)據(jù)集中各列的數(shù)據(jù)信息查看數(shù)據(jù)集df_short中各列的數(shù)據(jù)信息forcolumnindf_short.columns:print("列名",":",column)print("部分列值:",df_short[column].unique()[0:10])print("列值數(shù)量:",df_short[column].unique().shape[0])print("列缺失值情況:",df_short[column].isnull().sum(),"\n")消費(fèi)特征關(guān)鍵字段及其值如下。shop_category:商品大類,包含Electronics、Clothes、HouseholdElectricAppliance、JewelleryAccessories、MotherandInfant、Food、BeautyMakeup、OutdoorSports、Furniture等9大類。category:商品小類,包含Phone、Coat、AirConditioner、MilkPower、Tablet、RiceCooker、Refrigerator、Cookie等53小類商品。brand:商品品牌,包含Huawei、Other、Gree、Apple、Illuma、Sumsung、Supor、Haier等71個(gè)品牌。date:消費(fèi)日期,分布于2022年2月1日—2022年4月15日,約74天。京東客戶行為分析查看數(shù)據(jù)集df_label中各列的數(shù)據(jù)信息forcolumnindf_label.columns:print("列名",":",column)print("部分列值:",df_label[column].unique()[0:8])print("列值數(shù)量:",df_label[column].unique().shape[0])print("列缺失值情況:",df_label[column].isnull().sum(),"\n")數(shù)據(jù)集df_label中包括客戶行為主要字段,數(shù)據(jù)缺失情況嚴(yán)重,其中數(shù)據(jù)嚴(yán)重缺失的列有:time_Order(45831)、cate_most_Follow(48313)、cate_most_SavedCart(48077)、cate_most_Order(45831)、month_buy(47645)、month_Cart(48077)、week_buy(48658)、week_Cart(48077)、last_SavedCart(48077)、last_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 董海霞二年級(jí)語(yǔ)文《葡萄溝》教學(xué)設(shè)計(jì)新
- DB4415T 48-2025茶角胸葉甲綜合防控技術(shù)規(guī)程
- LED廣告屏幕安裝與維護(hù)合同模板
- 個(gè)人消費(fèi)貸款合同范例
- 二手住宅買(mǎi)賣合同正規(guī)范本
- 二手房分期付款合同書(shū)
- 不履行購(gòu)銷合同糾紛案解析
- 專利權(quán)轉(zhuǎn)讓及合作協(xié)議合同書(shū)
- 專項(xiàng)企業(yè)產(chǎn)(股)權(quán)托管合同文本
- 個(gè)人債務(wù)重組還款合同樣本
- 浙江省2023年中考科學(xué)真題全套匯編【含答案】
- DB31-T 1440-2023 臨床研究中心建設(shè)與管理規(guī)范
- 老客戶維護(hù)方案
- 高處作業(yè)安全教育培訓(xùn)講義課件
- dk膠原蛋白培訓(xùn)課件
- 萬(wàn)科物業(yè)管理公司全套制度(2016版)
- 動(dòng)物檢疫技術(shù)-動(dòng)物檢疫處理(動(dòng)物防疫與檢疫技術(shù))
- 英語(yǔ)經(jīng)典口語(yǔ)1000句
- 進(jìn)模模具設(shè)計(jì)
- 2021年高考化學(xué)真題和模擬題分類匯編專題20工業(yè)流程題含解析
- 2023年北京市高考作文評(píng)分標(biāo)準(zhǔn)及優(yōu)秀、滿分作文
評(píng)論
0/150
提交評(píng)論