我正在尝试创建一个熊猫产品的组合矩阵。例如,“有多少客户端同时拥有产品a和产品b”。当前数据的结构如下:

我想看到的是:

例如,购买产品A的客户中有66%的人也购买产品B。
谢谢!
发布于 2020-12-30 20:34:47
将数据帧设置为client作为索引,并且只剩下"product“列之后:
z = df.T @ df / df.sum()示例:
# 1. setup (I can't paste an image in and get a dataframe out...)
n = 5
df = pd.DataFrame(
np.random.randint(0, 2, size=(n, 3)),
index=np.random.randint(1000, 100000, size=n),
columns=[f'product{k}' for k in 'ABC']).rename_axis('client')
print(df)
# out:
productA productB productC
client
11348 1 1 0
69764 0 1 1
54055 0 1 0
18410 0 0 1
8826 1 0 0然后:
# 2. calc
z = df.T @ df / df.sum()
print(z)
# out:
productA productB productC
productA 1.0 0.333333 0.0
productB 0.5 1.000000 0.5
productC 0.0 0.333333 1.0另请注意,当列的和为零时,您将在结果中获得相应的NaN:
# for df =
productA productB productC
client
25721 0 0 0
56693 0 0 0
11888 1 0 0
57777 1 0 0
19599 0 1 0
# we get z =
productA productB productC
productA 1.0 0.0 NaN
productB 0.0 1.0 NaN
productC 0.0 0.0 NaNhttps://stackoverflow.com/questions/65505227
复制相似问题