布尔型交易DataFrame的部门组合共现支持度矩阵求解咨询
实现方案
你可以通过pandas的矩阵运算快速完成该计算,核心逻辑是利用布尔矩阵转置后与自身相乘,直接得到两两部门的共现次数,再除以总交易数即可得到对应比例。
完整代码
import pandas as pd # 1. 仅保留部门对应的布尔列,去除交易序号等非部门字段 dept_data = datBaskets.drop(columns=["交易序号"]) # 2. 统计总交易笔数 total_cnt = len(dept_data) # 3. 布尔值转整数后,转置矩阵与原矩阵相乘得到共现次数矩阵 co_occur_count = dept_data.astype(int).T.dot(dept_data.astype(int)) # 4. 除以总交易数得到占比,可按需设置保留小数位数 co_occur_ratio = co_occur_count / total_cnt # 如需和示例一致保留3位小数可加如下代码 # co_occur_ratio = co_occur_ratio.round(3)
结果验证
以你提供的样例数据为例:
- 总交易数为6,Batteries与Food仅在第1笔交易中同时出现,共现次数为1
- 计算得到的比例为
1/6≈0.167,和你给出的示例结果完全匹配 - 矩阵对角线元素为对应部门的交易占总交易数的比例,符合业务逻辑
内容的提问来源于stack exchange,提问作者Tom Green
相关产品推荐
相关产品推荐

