首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >组合矩阵

组合矩阵
EN

Stack Overflow用户
提问于 2020-12-30 18:09:27
回答 1查看 50关注 0票数 0

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

我想看到的是:

例如,购买产品A的客户中有66%的人也购买产品B。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-30 20:34:47

将数据帧设置为client作为索引,并且只剩下"product“列之后:

代码语言:javascript
运行
复制
z = df.T @ df / df.sum()

示例:

代码语言:javascript
运行
复制
# 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

然后:

代码语言:javascript
运行
复制
# 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

代码语言:javascript
运行
复制
# 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       NaN
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65505227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档