成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

大數據 數據分析
本文使用的數據集包含了2014.11.18到2014.12.18之間,淘寶App移動端一個月內的用戶行為數據。該數據有12256906天記錄,共6列數據。

1、項目背景與分析說明

1)項目背景

網購已經成為人們生活不可或缺的一部分,本次項目基于淘寶app平臺數據,通過相關指標對用戶行為進行分析,從而探索用戶相關行為模式。

2)數據和字段說明

本文使用的數據集包含了2014.11.18到2014.12.18之間,淘寶App移動端一個月內的用戶行為數據。該數據有12256906天記錄,共6列數據。

  • user_id:用戶身份
  • item_id:商品id
  • behavior_type:用戶行為類型(包括點擊、收藏、加入購物車、支付四種行為,分別用數字1、2、3、4表示)
  • user_geohash:地理位置
  • item_category:品類id(商品所屬的分類)
  • time:用戶行為發生的時間

3)分析的維度

  • 流量指標分析
  • 用戶行為分析
  • 漏斗流失分析
  • 用戶價值RFM分析

4)電商常用分析方法 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

5)什么是漏斗分析?

“漏斗分析”是一套流程式數據分析,它能夠科學反映用戶行為狀態,以及從起點到終點各階段用戶轉化率情況的一種重要分析模型。 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

2、導入相關庫

  1. import numpy as np 
  2. import pandas as pd 
  3. import matplotlib as  mpl 
  4. import matplotlib.pyplot as  plt 
  5. import seaborn as sns 
  6. import warnings 
  7. # 設置為seaborn繪圖風格 
  8. sns.set(style="darkgrid",font_scale=1.5) 
  9.  
  10. # 用來顯示中文標簽 
  11. mpl.rcParams["font.family"] = "SimHei" 
  12.  
  13. # 用來顯示負號 
  14. mpl.rcParams["axes.unicode_minus"] = False 
  15.  
  16. # 有時候運行代碼時會有很多warning輸出,像提醒新版本之類的,如果不想這些亂糟糟的輸出,可以使用如下代碼 
  17. warnings.filterwarnings('ignore'

3、數據預覽、數據預處理

  1. # 注意:str是為了將所有的字段都讀成字符串 
  2. df = pd.read_csv("taobao.csv",dtype=str) 
  3. df.shape 
  4. df.info() 
  5. df.sample(5) 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

1)計算缺失率

  1. # 由于地理位置的缺失值太多,我們也沒辦法填充,因此先刪除這一列 
  2. df.apply(lambda x:sum(x.isnull())/len(x),axis=0) 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

2)刪除地理位置這一列

  1. df.drop(["user_geohash"],axis=1,inplace=True

3)處理時間time列,將該列拆分為date日期列,和hour小時列

  1. df["date"] = df.time.str[0:-3] 
  2. df["hour"] = df.time.str[-2:] 
  3. df.sample(5) 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

4)將time、date列都變為標準日期格式,將hour列變為int格式

  1. df["date"] = pd.to_datetime(df["date"]) 
  2. df["time"] = pd.to_datetime(df["time"]) 
  3. df["hour"] = df["hour"].astype(int
  4. df.dtypes 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

5)將數據按照time列,升序排列

  1. df.sort_values(by="time",ascending=True,inplace=True
  2. df.head() 

解果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

6)刪除原始索引,重新生成新的索引

  1. df.reset_index(drop=True,inplace=True
  2. df.head() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

知識點:注意reset_index()中傳入參數drop的這種用法。

7)使用describe()函數查看數據的分布,這里使用了一個include參數,注意一下

  1. # 查看所有object字符串類型的數據分布狀況 
  2. df.describe(include=["object"]) 
  3. # describe()默認只會統計數值型變量的數據分布情況。 
  4. df.describe() 
  5. # 查看所有數據類型的數據分布狀況 
  6. df.describe(include="all"

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

知識點:注意describe()函數中傳入參數include的用法。

8)對時間數據做一個概覽

  1. df["date"].unique() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

4、模型構建

1)流量指標的處理

  • pv:指的是頁面總瀏覽量。每個用戶每刷新一次網頁,就會增加一次pv。
  • uv:指的是獨立訪客數。一臺電腦一個ip也就是一個獨立訪客。實際分析中,我們都是認為每個人只使用一臺電腦,即每一個獨立訪客代表一個用戶。

① 總計pv和uv

  1. total_pv = df["user_id"].count() 
  2. total_pv 
  3. total_uv = df["user_id"].nunique() 
  4. total_uv 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

結果分析:從圖中可以看到,該網站頁面的總瀏覽量為12256906次,該頁面的獨立訪客數共有10000個。

② 日期維度下的uv和pv:uv表示頁面總瀏覽量,pv表示獨立訪客數

  1. pv_daily = df.groupby("date")['user_id'].count() 
  2. pv_daily.head(5) 
  3. uv_daily = df.groupby("date")['user_id'].apply(lambda x: x.nunique()) 
  4. # uv_daily = df.groupby("date")['user_id'].apply(lambda x: x.drop_duplicates().count()) 
  5. uv_daily.head() 
  6. pv_uv_daily = pd.concat([pv_daily,uv_daily],axis=1) 
  7. pv_uv_daily.columns = ["pv","uv"
  8. pv_uv_daily.head() 
  9. # 繪圖代碼如下 
  10. plt.figure(figsize=(16,10)) 
  11. plt.subplot(211) 
  12. plt.plot(pv_daily,c="r"
  13. plt.title("每天頁面的總訪問量(PV)"
  14. plt.subplot(212) 
  15. plt.plot(uv_daily,c="g"
  16. plt.title("每天頁面的獨立訪客數(UV)"
  17. #plt.suptitle("PV和UV的變化趨勢"
  18. plt.tight_layout() 
  19. plt.savefig("PV和UV的變化趨勢",dpi=300) 
  20. plt.show() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

繪圖如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

結果分析:從圖中可以看出,pv和uv數據呈現高度的正相關。雙12前后,pv和uv都在350000-400000之間波動,雙十二的時候,頁面訪問量急劇上升,證明這次活動的效果很好。

③ 時間維度下的pv和uv

  1. pv_hour = df.groupby("hour")['user_id'].count() 
  2. pv_hour.head() 
  3. uv_hour = df.groupby("hour")['user_id'].apply(lambda x: x.nunique()) 
  4. uv_hour.head() 
  5. pv_uv_hour = pd.concat([pv_hour,uv_hour],axis=1) 
  6. pv_uv_hour.columns = ["pv_hour","uv_hour"
  7. pv_uv_hour.head() 
  8. # 繪圖代碼如下 
  9. plt.figure(figsize=(16,10)) 
  10. pv_uv_hour["pv_hour"].plot(c="steelblue",label="每個小時的頁面總訪問量"
  11. plt.ylabel("頁面訪問量"
  12.  
  13. pv_uv_hour["uv_hour"].plot(c="red",label="每個小時的頁面獨立訪客數",secondary_y=True
  14. plt.ylabel("頁面獨立訪客數"
  15. plt.xticks(range(0,24),pv_uv_hour.index
  16.  
  17. plt.legend(loc="best"
  18. plt.grid(True
  19.  
  20. plt.tight_layout() 
  21. plt.savefig("每個小時的PV和UV的變化趨勢",dpi=300) 
  22. plt.show() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

繪圖如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

結果分析:從圖中可以看出,晚上22:00-凌晨5:00,頁面的訪問用戶數量和訪問量逐漸降低,該時間段很多人都是處在休息之中。而從早上6:00-10:00用戶數量逐漸呈現上升趨勢,10:00-18:00有一個比較平穩的狀態,這個時間段是正常的上班時間。但是18:00以后,一直到晚上22:00,用戶劇烈激增,一直達到一天中訪問用戶數的最大值。運營人員可以參考用戶的活躍時間段,采取一些促銷活動。

2)用戶行為指標

① 總計點擊、收藏、添加購物車、支付用戶的情況

  1. type_1 = df[df['behavior_type']=="1"]["user_id"].count() 
  2. type_2 = df[df['behavior_type']=="2"]["user_id"].count() 
  3. type_3 = df[df['behavior_type']=="3"]["user_id"].count() 
  4. type_4 = df[df['behavior_type']=="4"]["user_id"].count() 
  5. print("點擊用戶:",type_1) 
  6. print("收藏用戶:",type_2) 
  7. print("添加購物車用戶:",type_3) 
  8. print("支付用戶:",type_4) 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

結果分析:從圖中可以看到,用戶進行頁面點擊–>收藏和加如購物車–>支付,逐漸呈現下降趨勢。關于這方面的分析,將在下面的漏斗圖中繼續更為深入的說明。

② 日期維度下,點擊、收藏、添加購物車、支付用戶的情況

  1. pv_date_type = pd.pivot_table(df,index='date'
  2.                              columns='behavior_type'
  3.                              values='user_id'
  4.                              aggfunc=np.size
  5. pv_date_type.columns = ["點擊","收藏","加入購物車","支付"
  6. pv_date_type.head() 
  7. # 繪圖如下 
  8. plt.figure(figsize=(16,10)) 
  9. sns.lineplot(data=pv_date_type[['收藏''加入購物車''支付']]) 
  10.  
  11. plt.tight_layout() 
  12. plt.savefig("不同日期不同用戶行為的PV變化趨勢",dpi=300) 
  13. plt.show() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

繪圖如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

③ 時間維度下,點擊、收藏、添加購物車、支付用戶的情況

  1. pv_hour_type = pd.pivot_table(df,index='hour'
  2.                              columns='behavior_type'
  3.                              values='user_id'
  4.                              aggfunc=np.size
  5. pv_hour_type.columns = ["點擊","收藏","加入購物車","支付"
  6. pv_hour_type.head() 
  7. # 繪圖如下 
  8. plt.figure(figsize=(16,10)) 
  9. sns.lineplot(data=pv_hour_type[['收藏''加入購物車''支付']]) 
  10.  
  11. pv_hour_type["點擊"].plot(c="pink",linewidth=5,label="點擊",secondary_y=True
  12. plt.legend(loc="best"
  13.  
  14. plt.tight_layout() 
  15. plt.savefig("不同小時不同用戶行為的PV變化趨勢",dpi=300) 
  16. plt.show() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

繪圖如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

④ 支付次數前10的用戶行為細分

  1. df["user_id1"] = df["user_id"
  2. buy_first = pd.pivot_table(df,index='user_id'
  3.                              columns='behavior_type'
  4.                              values='user_id1'
  5.                              aggfunc="count"
  6. buy_first.columns = ["點擊","收藏","加入購物車","支付"
  7. buy_first_10 = buy_first.sort_values(by="支付",ascending=False)[:10] 
  8. buy_first_10 
  9. # 繪制圖形如下 
  10. plt.figure(figsize=(16,10)) 
  11. plt.subplot(311) 
  12. plt.plot(buy_first_10["點擊"],c="r"
  13. plt.title("點擊數的變化趨勢"
  14. plt.subplot(312) 
  15. plt.plot(buy_first_10["收藏"],c="g"
  16. plt.title("收藏數的變化趨勢"
  17. plt.subplot(313) 
  18. plt.plot(buy_first_10["加入購物車"],c="b"
  19. plt.title("加入購物車的變化趨勢"
  20.  
  21. plt.xticks(np.arange(10),buy_first_10.index
  22.  
  23. plt.tight_layout() 
  24. plt.savefig("支付數前10的用戶,在點擊、收藏、加入購物車的變化趨勢",dpi=300) 
  25. plt.show() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

繪圖如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

結果分析:通過這個分析,我們可以看出,購買次數最多的用戶,點擊、收藏、加入購車的次數不一定是最多的,

⑤ ARPPU分析:平均每用戶收入,即可通過“總收入/AU” 計算得出

  1. total_custome = df[df['behavior_type'] == "4"].groupby(["date","user_id"])["behavior_type"].count()\ 
  2.                 .reset_index().rename(columns={"behavior_type":"total"}) 
  3. total_custome.head() 
  4. total_custome2 = total_custome.groupby("date").sum()["total"]/\ 
  5.                  total_custome.groupby("date").count()["total"
  6. total_custome2.head(10) 
  7. # 繪圖如下 
  8. x = len(total_custome2.index.astype(str)) 
  9. y = total_custome2.index.astype(str) 
  10.  
  11. plt.plot(total_custome2.values
  12. plt.xticks(range(0,30,7),[y[i] for i in range(0,x,7)],rotation=90) 
  13. plt.title("每天的人均消費次數"
  14.  
  15. plt.tight_layout() 
  16. plt.savefig("每天的人均消費次數",dpi=300) 
  17. plt.show() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

繪圖如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

⑥ 日ARPU分析:表示的是平均每用戶收入。ARPU = 總收入/AU得到

  1. df["operation"] = 1 
  2. aa = df.groupby(["date","user_id",'behavior_type'])["operation"].count().\ 
  3.      reset_index().rename(columns={"operation":"total"}) 
  4. aa.head(10) 
  5. aa1 = aa.groupby("date").apply(lambda x: x[x["behavior_type"]=="4"]["total"].sum()/x["user_id"].nunique()) 
  6. aa1.head(10) 
  7. # 繪圖如下 
  8. x = len(aa1.index.astype(str)) 
  9. y = aa1.index.astype(str) 
  10.  
  11. plt.plot(aa1.values
  12. plt.xticks(range(0,30,7),[y[i] for i in range(0,x,7)],rotation=90) 
  13. plt.title("每天的活躍用戶消費次數"
  14.  
  15. plt.tight_layout() 
  16. plt.savefig("每天的活躍用戶消費次數",dpi=300) 
  17. plt.show() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

繪圖如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

⑦ 付費率PUR = APA/AU,這里用【消費人數 / 活躍用戶人數】代替

  1. rate = aa.groupby("date").apply(lambda x: x[x["behavior_type"]=="4"]["total"].count()/x["user_id"].nunique()) 
  2. rate.head(10) 
  3. # 繪圖如下 
  4. x = len(rate.index.astype(str)) 
  5. y = rate.index.astype(str) 
  6.  
  7. plt.plot(rate.values
  8. plt.xticks(range(0,30,7),[y[i] for i in range(0,x,7)],rotation=90) 
  9. plt.title("付費率分析"
  10.  
  11. plt.tight_layout() 
  12. plt.savefig("付費率分析",dpi=300) 
  13. plt.show() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

⑧ 復購情況分析(復購率)

  1. re_buy = df[df["behavior_type"]=="4"].groupby("user_id")["date"].apply(lambda x: x.nunique()) 
  2. print(len(re_buy)) 
  3. re_buy[re_buy >= 2].count() / re_buy.count() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

3)漏斗分析

  1. df_count = df.groupby("behavior_type").size().reset_index().\ 
  2.            rename(columns={"behavior_type":"環節",0:"人數"}) 
  3.             
  4. type_dict = { 
  5.     "1":"點擊"
  6.     "2":"收藏"
  7.     "3":"加入購物車"
  8.     "4":"支付" 
  9. df_count["環節"] = df_count["環節"].map(type_dict) 
  10.  
  11. a = df_count.iloc[0]["人數"
  12. b = df_count.iloc[1]["人數"
  13. c = df_count.iloc[2]["人數"
  14. d = df_count.iloc[3]["人數"
  15. funnel = pd.DataFrame({"環節":["點擊","收藏及加入購物車","支付"],"人數":[a,b+c,d]}) 
  16.  
  17. funnel["總體轉化率"] = [i/funnel["人數"][0] for i in funnel["人數"]] 
  18. funnel["單一轉化率"] = np.array([1.0,2.0,3.0]) 
  19. for i in range(0,len(funnel["人數"])): 
  20.     if i == 0: 
  21.         funnel["單一轉化率"][i] = 1.0 
  22.     else
  23.         funnel["單一轉化率"][i] = funnel["人數"][i] / funnel["人數"][i-1] 
  24. # 繪圖如下 
  25. import plotly.express as px 
  26. import plotly.graph_objs as go 
  27.  
  28. trace = go.Funnel( 
  29.     y = ["點擊""收藏及加入購物車""購買"], 
  30.     x = [funnel["人數"][0], funnel["人數"][1], funnel["人數"][2]], 
  31.     textinfo = "value+percent initial"
  32.     marker=dict(color=["deepskyblue""lightsalmon""tan"]), 
  33.     connector = {"line": {"color""royalblue""dash""solid""width": 3}}) 
  34.      
  35. data =[trace] 
  36.  
  37. fig = go.Figure(data) 
  38.  
  39. fig.show() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

繪圖如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

結果分析:由于收藏和加入購車都是有購買意向的一種用戶行為,切不分先后順序,因此我們將其合并看作一個階段。從上面的漏斗圖和funnel表可以看出,從瀏覽到具有購買意向(收藏和加入購物車),只有5%的轉化率,但是到了真正到購買的轉化率只有1%,再看“單一轉化率”,從具有購買意向到真正購買的轉化率達到了20%。說明從瀏覽到進行收藏和加入購物車的階段,是指標提升的重要環節。

4)客戶價值分析(RFM分析)

  1. from datetime import datetime 
  2. # 最近一次購買距離現在的天數 
  3. recent_buy = df[df["behavior_type"]=="4"].groupby("user_id")["date"].\ 
  4.              apply(lambda x:datetime(2014,12,20) - x.sort_values().iloc[-1]).reset_index().\ 
  5.              rename(columns={"date":"recent"}) 
  6. recent_buy["recent"] = recent_buy["recent"].apply(lambda x: x.days) 
  7. recent_buy[:10] 
  8. # 購買次數計算 
  9. buy_freq = df[df["behavior_type"]=="4"].groupby("user_id")["date"].count().reset_index().\ 
  10.           rename(columns={"date":"freq"}) 
  11. buy_freq[:10] 
  12. # 將上述兩列數據,合并起來 
  13. rfm = pd.merge(recent_buy,buy_freq,on="user_id"
  14. rfm[:10] 
  15. # 給不同類型打分 
  16. r_bins = [0,5,10,15,20,50] 
  17. f_bins = [1,30,60,90,120,900] 
  18. rfm["r_score"] = pd.cut(rfm["recent"],bins=r_bins,labels=[5,4,3,2,1],right=False
  19. rfm["f_score"] = pd.cut(rfm["freq"],bins=f_bins,labels=[1,2,3,4,5],right=False
  20. for i in ["r_score","f_score"]: 
  21.     rfm[i] = rfm[i].astype(float
  22. rfm.describe() 
  23. # 比較各分值與各自均值的大小 
  24. rfm["r"] = np.where(rfm["r_score"]>3.943957,"高","低"
  25. rfm["f"] = np.where(rfm["f_score"]>1.133356,"高","低"
  26. # 將r和f列的字符串合并起來 
  27. rfm["value"] = rfm["r"].str[:] + rfm["f"].str[:] 
  28. rfm.head() 
  29. # 自定義函數給用戶貼標簽 
  30. def trans_labels(x): 
  31.     if x == "高高"
  32.         return "重要價值客戶" 
  33.     elif x == "低高"
  34.         return "重要喚回客戶" 
  35.     elif x == "高低"
  36.         return "重要深耕客戶" 
  37.     else
  38.         return "重要挽回客戶" 
  39. rfm["標簽"] = rfm["value"].apply(trans_labels) 
  40. # 計算出每個標簽的用戶數量 
  41. rfm["標簽"].value_counts() 

結果如下: 

Python:我的交易行為終于在分析1225萬條淘寶數據,搞清楚了

 

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2020-11-16 08:37:16

MariaDB性能優化

2018-06-26 14:42:10

StringJava數據

2021-09-01 09:32:40

工具

2022-11-16 14:02:44

2023-06-26 11:59:52

標簽質量梳理

2011-06-22 09:37:03

桌面虛擬化存儲

2025-06-24 09:16:48

2020-08-04 08:48:34

數據彈屏技術

2020-12-02 09:36:09

處理器手機卡頓

2020-12-16 11:09:27

JavaScript語言開發

2020-12-31 07:57:25

JVM操作代碼

2020-04-11 11:21:22

留存分析模型分析

2020-10-27 08:24:45

阿里巴巴SLF4J

2021-09-21 16:18:07

手機電池快充

2020-12-24 15:18:27

大數據數據分析

2017-08-15 08:27:48

云備份問題恢復

2015-10-12 10:01:26

AndroidWindows應用Windows 10

2021-01-19 06:43:10

Netty框架網絡技術

2018-06-20 10:43:58

云端霧端霧計算

2023-01-26 00:01:00

機器學習大腦活動
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲综合在 | 欧美在线视频不卡 | 欧美精品在线一区 | 99re国产| 欧美国产精品一区二区三区 | 精品久久久久久国产 | 精品国产一区二区三区久久久久久 | 久久精品一级 | 密室大逃脱第六季大神版在线观看 | 免费看黄色小视频 | 天天干天天操天天看 | 国产一区二区三区在线看 | 污片在线免费观看 | 91成人免费观看 | 欧美日韩18| 久久精品在线播放 | 一本岛道一二三不卡区 | 在线中文一区 | 日韩一级免费 | 国产中文区二幕区2012 | 国产91丝袜在线18 | 欧美国产免费 | 中文字幕一区二区三区日韩精品 | 日日干天天操 | 欧美一级欧美三级在线观看 | 国内精品成人 | 成年男女免费视频网站 | 精品免费国产一区二区三区 | 午夜精品一区二区三区在线观看 | 色综合久久天天综合网 | 毛片久久久| 综合另类| 日韩a | 欧美在线精品一区 | 久草视 | 久久黄视频 | 欧美精品一区二区三区四区 在线 | 99pao成人国产永久免费视频 | 一区二区视频在线 | 久久看精品 | 亚洲一区二区精品视频 |