如何计算 Pandas 中的 "churned" 客户? (定期停止购买的顾客)
How to calculate "churned" customers in Pandas? (Customers who have stopped buying regularly)
我清理并格式化了一些数据。
其中,我有这些列:名称、订购日期和订阅(具有布尔值)。
您如何在 pandas 中实现这一目标?
示例数据帧:
Date Name Subscription
2020/06 Super Mario False
2020/06 Princess Peach False
2020/06 Bowser False
2020/06 Koopa False
2020/06 Yoshi False
许多这样的客户出现了多个日期。
客户流失是指现有客户不再与您开展业务。根据您的业务性质,这可能意味着不同的事情。示例包括:
取消订阅
- 关闭帐户
- Non-renewal 合同或服务协议
- 消费者决定在另一个 store/use 另一个服务提供商处购物
在确定客户流失率是多少之前,您需要决定如何量化上述行为,并就贵企业客户流失的定义达成一致。
根据您共享的样本数据,最好的办法是计算,
特定时期内流失的客户总数。您需要定义时间范围以将客户视为已流失。对于前。根据您正在查看的业务,过去 30 天、60 天等未购买的客户。
示例数据:
import pandas as pd
import datetime as dt
df = pd.DataFrame({'Date':['2020-06-30','2020-05-05','2020-04-10','2020-02-26'],'Name':['Super Mario','Princess Peach','Bowser','Super Mario'],'Subscription':['False','False','False','False']})
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
使用这些数据,我们将获得每个客户的最大交易日期,并确定客户是流失还是存活。
last_trans=df.groupby('Name')['Date'].max().reset_index()
获取计算上次购买持续时间的当前日期。
today=pd.to_datetime(dt.date.today())
last_trans['last_purchase']=today-last_trans['Date']
last_trans['last_purchase']=last_trans['last_purchase'].apply(lambda x: x.days)
我正在考虑 90 天 window 来考虑客户是否流失。
(即,如果客户在过去 90 天内没有购买,我将其视为 Churned else Survived)。
last_trans.loc[last_trans['last_purchase']>90,'Category']='Churned'
last_trans.loc[last_trans['last_purchase']<=90,'Category']='Survived'
我清理并格式化了一些数据。 其中,我有这些列:名称、订购日期和订阅(具有布尔值)。
您如何在 pandas 中实现这一目标?
示例数据帧:
Date Name Subscription
2020/06 Super Mario False
2020/06 Princess Peach False
2020/06 Bowser False
2020/06 Koopa False
2020/06 Yoshi False
许多这样的客户出现了多个日期。
客户流失是指现有客户不再与您开展业务。根据您的业务性质,这可能意味着不同的事情。示例包括:
取消订阅
- 关闭帐户
- Non-renewal 合同或服务协议
- 消费者决定在另一个 store/use 另一个服务提供商处购物
在确定客户流失率是多少之前,您需要决定如何量化上述行为,并就贵企业客户流失的定义达成一致。 根据您共享的样本数据,最好的办法是计算, 特定时期内流失的客户总数。您需要定义时间范围以将客户视为已流失。对于前。根据您正在查看的业务,过去 30 天、60 天等未购买的客户。
示例数据:
import pandas as pd
import datetime as dt
df = pd.DataFrame({'Date':['2020-06-30','2020-05-05','2020-04-10','2020-02-26'],'Name':['Super Mario','Princess Peach','Bowser','Super Mario'],'Subscription':['False','False','False','False']})
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
使用这些数据,我们将获得每个客户的最大交易日期,并确定客户是流失还是存活。
last_trans=df.groupby('Name')['Date'].max().reset_index()
获取计算上次购买持续时间的当前日期。
today=pd.to_datetime(dt.date.today())
last_trans['last_purchase']=today-last_trans['Date']
last_trans['last_purchase']=last_trans['last_purchase'].apply(lambda x: x.days)
我正在考虑 90 天 window 来考虑客户是否流失。 (即,如果客户在过去 90 天内没有购买,我将其视为 Churned else Survived)。
last_trans.loc[last_trans['last_purchase']>90,'Category']='Churned'
last_trans.loc[last_trans['last_purchase']<=90,'Category']='Survived'