我有一个user_id列(每个唯一用户有多行),我有另一列用于他们点击的链接(每个链接一行,但有一个用户可能点击了几个链接)。 我想知道点击链接的用户百分比:
1,
2,
3,
更重要的是那些在1,2和3上碰撞的那些。
由于
答案 0 :(得分:0)
以下是一个简单的解决方案:
df = pd.DataFrame({"User_ID": [1, 1, 1, 2, 2, 3, 3],
"Link": [6, 2, 4, 1, 2, 1, 3]})
print(df)
Link User_ID
0 6 1
1 2 1
2 4 1
3 1 2
4 2 2
5 1 3
6 3 3
# get overall user count
n_users = df["User_ID"].unique().size
# define helper function to calculate percentage
def get_percentage(x):
bool_links = df["Link"].isin(x)
count_users = df.loc[bool_links, "User_ID"].unique().size
return count_users / float(n_users)
# print percentages
for link in [[1], [2], [3], [1, 2, 3]]:
print("Link", link, get_percentage(link))
Link [1] 0.6666666666666666
Link [2] 0.6666666666666666
Link [3] 0.3333333333333333
Link [1, 2, 3] 1.0