如何按AppVersion分组计算UserPlayed各关卡的留存率?
按AppVersion分组计算各等级留存率的方法
先确认你的数据结构,首先加载并预处理数据:
import pandas as pd df = pd.DataFrame({ 'AppVersion':['1.0.20','1.0.20','1.0.20','1.0.20','1.0.20','1.0.22','1.0.22','1.0.22','1.0.22','1.0.22'], 'Level':['1','2','3','4','5','1','2','3','4','5'], 'UserPlayed':['7131','6666','6235','5482','4779','12787','12096','11251','9750','8891'] }) # 将UserPlayed转为数值类型,否则无法进行除法计算 df['UserPlayed'] = df['UserPlayed'].astype(int)
接下来按AppVersion分组计算留存率,具体步骤和代码如下:
- 提取每个版本下Level 1的用户数,作为该版本所有等级留存率的计算分母
- 对每个分组内的行,Level 1留存率直接设为100%,其他等级用自身UserPlayed除以对应版本的Level 1用户数得到留存率
- 可选:将留存率转为百分比格式,方便直观查看
# 定义留存率计算函数 def calculate_retention(group): # 获取当前版本Level 1的用户数 level1_users = group[group['Level'] == '1']['UserPlayed'].iloc[0] # 计算留存率,Level 1设为1(对应100%) group['RetentionRate'] = group['UserPlayed'].apply(lambda x: 1 if x == level1_users else x / level1_users) # 转成百分比格式 group['RetentionRate(%)'] = group['RetentionRate'].apply(lambda x: f"{x*100:.2f}%") return group # 按AppVersion分组并应用计算函数 result_df = df.groupby('AppVersion', group_keys=False).apply(calculate_retention) # 输出结果 print(result_df)
运行后会得到每个版本下各等级的留存率,比如1.0.20版本的Level 2留存率为6666/7131≈93.48%,Level 3为6235/7131≈87.44%,以此类推。
内容的提问来源于stack exchange,提问作者Danny Nguyen
相关产品推荐
相关产品推荐

