指標、計算——復購率

1、指標定義

  在單位時間窗口內,屢次(2次及以上)消費的用戶在總消費用戶的佔比。python


2、計算方法

①按人數計算

  全部購買過產品的顧客,以每一個人爲獨立單位重複購買產品的次數,好比有10個客戶購買了產品,5個產生了重複購買,則重複購買率爲50%。sql

②按交易次數計算

  某月內,一共產生了100筆交易,其中有20我的有了二次購買,這20人中的10我的又有了三次購買,則重複購買次數爲30次,重複購買率爲30%。
  通常按第1中計算spa

3、實例操做——按人數計算

訂單信息表order_info相關字段:3d

  • userID:用戶ID
  • paidtime:支付時間
  • ispaid:支付狀態(非必要字段)

注意:一個用戶可能在同一天消費屢次code


①SQL求解

解題步驟:
a、先求出【用戶時間窗口內的用戶消費次數表】order_timesblog

CREATE OR REPLACE VIEW order_times AS 
SELECT
	DATE_FORMAT( paidtime, "%Y-%m" ) AS 月份,
	userid,
	COUNT( userid ) AS 消費次數 
FROM
	order_info 
WHERE
	ispaid = '已支付' 
GROUP BY
	DATE_FORMAT( paidtime, "%Y-%m" ),
	userid
  篩選出已支付的訂單記錄,對用戶和時間窗口進行分組,時間窗口須要根據實際需求進行必定轉化處理(這裏時間窗口爲月份)。

b、時間窗口內【消費次數>1的人數】/【總消費人數】索引

SELECT
	月份,
	COUNT( DISTINCT userid ) AS 消費人數,
	COUNT(CASE WHEN `消費次數` > 1 THEN 1 ELSE NULL END) AS 復購人數,
	COUNT(CASE WHEN `消費次數` > 1 THEN 1 ELSE NULL END)/COUNT( DISTINCT userid ) AS 復購率
FROM
	order_times
GROUP BY
	月份;
  按時間窗口分組,再用case when語句求出【消費次數>1的人數】

②python求解

解題步驟:
a、導入數據utf-8

col = ['orderid','userid','ispaid','price','paidtime']
df = pd.read_csv(r'file_path/order_info_utf.csv',encoding='utf-8',names=col)
df.head()

b、新增時間窗口字段產品

df['month'] = df['paidtime'].str[:7]
df.head()

c、篩選已支付訂單記錄table

df = df[df['ispaid']=='已支付']
df.head()

d、數據透視,獲取【時間窗口內的用戶消費次數透視表】

# 用戶ID爲索引,時間窗口爲列名稱,count統計消費次數,無消費記錄用0填充
order_counts = df.pivot_table(index='userid',columns='month',values='price',aggfunc='count').fillna(0)
order_counts.head()

e、計算復購率

month_buy_rate = pd.DataFrame((order_counts>1).sum()/(order_counts>=1).sum(),columns=['復購率'])
month_buy_rate['消費人數'] = (order_counts>=1).sum()
month_buy_rate['復購人數'] = (order_counts>1).sum()
month_buy_rate

4、提高策略和方法

  復購率變高,也就是用戶多消費。想讓用戶多消費,莫非就是自身產品實力過硬,或者產品不咋滴,可是可是套路足,讓用戶以爲本身產品「性價比」高,值得再次購買。

相關文章
相關標籤/搜索