如何计算其他列中具有特定值的用户的比率

时间:2017-03-02 10:55:41

标签: python pandas

我有一个user_id列(每个唯一用户有多行),我有另一列用于他们点击的链接(每个链接一行,但有一个用户可能点击了几个链接)。 我想知道点击链接的用户百分比:

1,

2,

3,

更重要的是那些在1,2和3上碰撞的那些。

由于

1 个答案:

答案 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