如何基于发票数据集生成商品共现次数矩阵?
生成商品共现次数矩阵
现有一个以发票为行、商品为列的二进制数据集(1表示商品包含在对应发票中,0表示未包含),需生成一个商品×商品的矩阵,矩阵交叉单元格展示对应商品对共同出现在同一发票中的次数。以下是示例代码及对应数据集、结果矩阵:
示例代码
import pandas as pd ids = ['invoice_1','invoice_2','invoice_3','invoice_4','invoice_5','invoice_6'] A= [0,0,1,0,1,1] B= [0,1,1,0,1,1] C= [1,1,1,0,1,0] D= [1,0,0,1,1,0] df=pd.DataFrame.from_dict({'A':A, 'B':B, 'C':C, 'D':D}) df.index=ids
原始数据集(Table 1)
| A | B | C | D | |
|---|---|---|---|---|
| invoice_1 | 0 | 0 | 1 | 1 |
| invoice_2 | 0 | 1 | 1 | 0 |
| invoice_3 | 1 | 1 | 1 | 0 |
| invoice_4 | 0 | 0 | 0 | 1 |
| invoice_5 | 1 | 1 | 1 | 1 |
| invoice_6 | 1 | 1 | 0 | 0 |
| invoice_7 | 1 | 1 | 0 | 0 |
商品共现矩阵(Table 2)
| A | B | C | D | |
|---|---|---|---|---|
| A | 4 | 4 | 2 | 1 |
| B | 4 | 4 | 3 | 1 |
| C | 2 | 3 | 4 | 2 |
| D | 1 | 1 | 2 | 3 |
关键说明
重点关注商品对的共现次数,比如:
- A与B共同出现4次
- D与C共同出现2次
内容的提问来源于stack exchange,提问作者Bugra Varol
相关产品推荐
相关产品推荐

