Pandas,按唯一用户分组和分析结果
Pandas, grouping by unique user and profiling result
我有一个赌博交易的 df(下面的小样本)。我希望能够对每个唯一用户的交易进行分组,而且还可以确定每个用户的成功。
import pandas as pd
d = {'user_id': [1234, 5830, 3943, 1234, 5032, 5830,1234 ], 'win': [1, 0, 1, 0, 0, 1, 1],}
df= pd.DataFrame(data=d)
df
我可以将用户 ID 分组并计数以查看每次出现的次数,但不执行第二部分 - 确定每个用户的成功,希望看到 win/loss 的实际值和比率对于每个用户。
group = df.groupby('user_id')['user_id'].count()
print(group)
所以我的输出将是一个包含这些列的 df
'User'、'Total_wins'、'Total_losses'、'win_loss_ratio'
将 GroupBy.agg
用于计数 1
和 sum
,对于计数 0
lambda 函数,对于 ratio
使用 mean
:
df=(df.groupby('user_id',as_index=False).agg(Total_wins=('win','sum'),
Total_losses=('win', lambda x: x.eq(0).sum()),
win_loss_ratio=('win','mean')))
print (df)
user_id Total_wins Total_losses win_loss_ratio
0 1234 2 1 0.666667
1 3943 1 0 1.000000
2 5032 0 1 0.000000
3 5830 1 1 0.500000
我有一个赌博交易的 df(下面的小样本)。我希望能够对每个唯一用户的交易进行分组,而且还可以确定每个用户的成功。
import pandas as pd
d = {'user_id': [1234, 5830, 3943, 1234, 5032, 5830,1234 ], 'win': [1, 0, 1, 0, 0, 1, 1],}
df= pd.DataFrame(data=d)
df
我可以将用户 ID 分组并计数以查看每次出现的次数,但不执行第二部分 - 确定每个用户的成功,希望看到 win/loss 的实际值和比率对于每个用户。
group = df.groupby('user_id')['user_id'].count()
print(group)
所以我的输出将是一个包含这些列的 df 'User'、'Total_wins'、'Total_losses'、'win_loss_ratio'
将 GroupBy.agg
用于计数 1
和 sum
,对于计数 0
lambda 函数,对于 ratio
使用 mean
:
df=(df.groupby('user_id',as_index=False).agg(Total_wins=('win','sum'),
Total_losses=('win', lambda x: x.eq(0).sum()),
win_loss_ratio=('win','mean')))
print (df)
user_id Total_wins Total_losses win_loss_ratio
0 1234 2 1 0.666667
1 3943 1 0 1.000000
2 5032 0 1 0.000000
3 5830 1 1 0.500000