成人免费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

桌面虛擬化存儲

2020-12-02 09:36:09

處理器手機卡頓

2025-06-24 09:16:48

2020-08-04 08:48:34

數據彈屏技術

2020-12-16 11:09:27

JavaScript語言開發

2020-12-31 07:57:25

JVM操作代碼

2021-09-21 16:18:07

手機電池快充

2020-04-11 11:21:22

留存分析模型分析

2020-10-27 08:24:45

阿里巴巴SLF4J

2017-08-15 08:27:48

云備份問題恢復

2020-12-24 15:18:27

大數據數據分析

2021-01-19 06:43:10

Netty框架網絡技術

2018-06-20 10:43:58

云端霧端霧計算

2015-10-12 10:01:26

AndroidWindows應用Windows 10

2023-01-26 00:01:00

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

51CTO技術棧公眾號

主站蜘蛛池模板: 久久一二区 | 国产网站在线免费观看 | 久久国产精品久久久久 | 成人亚洲网 | 久久av一区二区三区 | 精品一区av | 精品毛片| 午夜精品一区二区三区在线观看 | 成人免费视频7777777 | 视频一区二区三区中文字幕 | 一区二区三区在线电影 | 久久在线| 国产精品久久久久久久久久 | 97人人干 | 欧美一区二区三区在线观看 | 亚洲网视频 | 污片在线免费观看 | 久久99精品国产99久久6男男 | 日本a视频 | 久久伦理电影 | 黄色在线免费观看 | 天天干亚洲| 欧美又大粗又爽又黄大片视频 | 欧美成人一区二区 | 欧美黄色片在线观看 | 黄色片在线看 | 一区二区三区视频在线免费观看 | 亚洲一区二区三区在线观看免费 | 在线观看中文字幕亚洲 | 成人中文字幕av | 在线日韩中文字幕 | 99久久免费精品国产免费高清 | 羞羞的视频在线观看 | 91精品国产一区二区三区 | 久久久久国产精品午夜一区 | 91精品国产91 | 中文字幕免费观看 | 久久久91 | 91玖玖| 成年人在线观看 | 国内精品久久精品 |