You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas识别流失用户:判断最后3周无会话的用户

识别Pandas DataFrame中的流失用户实现方法

需求说明

我们需要从包含用户ID、登录周数(Week)、周会话数(Sessions)的DataFrame中,标记出流失用户(定义为用户生命周期的最后3周无任何会话),并添加'Churn Session'和'Churned_user'两列。

具体实现步骤

  • 步骤1:准备示例数据
    先创建模拟用户行为的示例DataFrame:

    import pandas as pd
    
    data = {
        'UserID': [1,1,1,1,1,2,2,2,2,3,3,3],
        'Week': [1,2,3,4,5,1,2,3,4,1,2,3],
        'Sessions': [5,3,2,4,1,6,4,3,0,2,1,0]
    }
    df = pd.DataFrame(data)
    
  • 步骤2:计算每个用户的生命周期最后一周
    按用户分组获取每个用户的最大周数(即生命周期终点),并合并到原DataFrame:

    user_last_week = df.groupby('UserID')['Week'].max().reset_index(name='Last_Week')
    df = df.merge(user_last_week, on='UserID', how='left')
    
  • 步骤3:标记流失观察期的周
    判断每条记录是否属于用户生命周期的最后3周,生成'Churn Session'标记列:

    df['Churn Session'] = df.apply(
        lambda x: 1 if (x['Week'] >= x['Last_Week'] - 2) and (x['Week'] <= x['Last_Week']) else 0,
        axis=1
    )
    
  • 步骤4:识别流失用户
    检查每个用户在最后3周的会话总数是否为0,生成'Churned_user'标记列:

    user_churn_check = df[df['Churn Session'] == 1].groupby('UserID')['Sessions'].sum().reset_index(name='Total_Churn_Sessions')
    user_churn_check['Churned_user'] = user_churn_check['Total_Churn_Sessions'].apply(lambda x: 1 if x == 0 else 0)
    df = df.merge(user_churn_check[['UserID', 'Churned_user']], on='UserID', how='left')
    
  • 步骤5:清理临时列并查看结果
    删除临时的Last_Week列,得到最终目标DataFrame:

    df = df.drop('Last_Week', axis=1)
    print(df)
    

运行上述代码后,用户3的Churned_user会被标记为1,符合示例中的流失条件,其他用户则为0。

内容的提问来源于stack exchange,提问作者FilipaF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 06:18:27