01 Python 電商數據分析10 所有文章

[數據分析] Python快速計算NES模型

NES模型_Max行銷誌

過去投放廣告較專注在類似受眾、廣泛受眾和針對瀏覽行為進行再行銷,比較少針對消費過受眾進行投放;此次利用 Python 寫出了 NES 模型的程式碼,可以快速計算出 NES 用戶表現,此篇提供程式碼供大家參考。

一. NES模型介紹

NES 模型是為了掌握顧客的消費行為變動性而設計,將客戶分群成為三大類,共五種標籤:

  • N =新顧客(New Customer)
  • E =既有顧客(Existing Customer)
    • E0 主力顧客:購買週期 1 倍時間內回購的人
    • E1 瞌睡顧客:超過購買週期 1~2 倍未回購的人
    • E2 半睡顧客:超過購買週期 2~3 倍未回購的人
  • S =沉睡顧客(Sleeping Customer),購買頻率超過購買週期3倍未回購的人

延伸閱讀:行銷 4P 理論要改寫了?大數據這樣顛覆消費市場!

NES模型
NES 模型

二. NES模型需準備的會員資料

  1. OrderId:訂單編號
  2. order_date:訂單日期
  3. TotalCharges:訂單花費
  4. UserId1:客戶 Email (此筆資料是方便日後可以進行廣告再行銷)
  5. UserId2:客戶 Phone (此筆資料是方便日後可以進行廣告再行銷)

三. 程式碼

orders['order_date'] = pd.to_datetime(orders['訂單日期'])
orders['Recency'] = pd.to_datetime(orders['訂單日期'])

nesTable = orders.groupby('顧客').agg({'order_date': lambda x: (x.max()- x.min()).days, # Retention
                                         'Recency': lambda x: (NOW - x.max()).days, #Recency
                                         '訂單號碼': lambda x: len(x), # Frequency
                                         '付款總金額': lambda x: x.sum(), # Monetary Value
                                         '電郵': lambda x: x.min(), #email
                                         '電話號碼': lambda x: x.min() #phone
                                             }) 

nesTable['order_date'] = nesTable['order_date'].astype(int)
nesTable['Recency'] = nesTable['Recency'].astype(int)
nesTable.rename(columns={'order_date': 'total_day', 
                         'Recency': 'recency',
                         '訂單號碼': 'frequency', 
                         'TotalCharges': 'monetary_value',
                         'UserId1': 'email',
                         'UserId2': 'phone'}, inplace=True)



day = NOW.strftime("%Y-%m")
E0 = nesTable[(nesTable["recency"] <= retention)]["recency"].count()
E1 = nesTable[(nesTable["recency"] > retention) & (nesTable["recency"] <= retention*2)]["recency"].count()
E2 = nesTable[(nesTable["recency"] > retention*2) & (nesTable["recency"] <= retention*3)]["recency"].count()
S1 = nesTable[(nesTable["recency"] > retention*3)]["recency"].count()
total = nesTable["recency"].count()

pList.append([
            day, E0, E1, E2, S1,retention,total
            ])

df = pd.DataFrame(pList)
df.columns = ['Day','E0','E1', 'E2', 'S1','retention','total']

最後~

除了本篇 Python 快速計算 RFM 模型外,也推薦閱讀此篇用 SQL 指令方式來計算電商分析指標:

【資料庫筆記】 PostgreSQL 計算電商分析指標

  • 用戶活躍度指數 MAU / WAU / DAU
  • 會員分類 RFM 模型
  • 會員分類 NES 模型
  • 用戶留存率 Customer Retention Rate
  • 數值區間分類貼標籤 Label
  • 計算七日平均 Rolling Averages
  • 計算累積加總 Cumulative Sum

延伸閱讀

那 [數據分析] Python 快速計算 NES 模型 就到這邊感謝收看感謝收看,如文章內容有誤請不吝指正!

有關 Max行銷誌的最新文章,都會發佈在 Max 的 Facebook 粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!
Max 行銷誌:https://www.facebook.com/maxlist25/

在〈[數據分析] Python快速計算NES模型〉中有 4 則留言

  1. 不好意思,內文提及「此篇提供程式碼供大家參考」
    但是並沒有看到程式碼,是否為該圖片(已經看不到圖片了)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *