【发布时间】:2020-01-10 23:02:58
【问题描述】:
假设我有一个数据框,其中包含以下格式的数据。
UID | Name | ID
----------------
1 | ABC | IM-1
2 | XYZ | IM-2
3 | XYZ | IM-2
4 | PQR | IM-3
5 | PQR | IM-4
6 | PQR | IM-5
7 | XYZ | IM-5
8 | ABC | IM-5
我需要创建一个输入和弦图代码的矩阵。这需要以下格式的输出:
(array([[0,1,1,1],
[1,1,1,0],
[1,1,0,2]]),['ABC','XYZ','PQR'])
注意:在本例中, - “名称”在列表中是有限的(即 ABC、XYZ 或 PQR) - “ID”在记录之间共享 - 第四列是独立的记录数(例如 ABC 是单个记录 IM-1 的一部分,而 PQR 在 IM-4 和 中出现两次>IM-5 - 矩阵的其他成员是基于ID的Names之间的联系(例如IM-5,增加PQR-XYZ的值,XYZ-PQR , PQR-ABC,ABC-PQR,XYZ-ABC & ABC-XYZ) - 目标是为“名称”字段之间的连接创建一个和弦图
我知道这是一本好书。提前感谢您的帮助。
【问题讨论】:
-
我不清楚您是如何得出示例中的邻接矩阵的。如果您有 3 个名称,为什么数组有 4 列?如果表中只有 8 个条目,为什么总和为 10?
-
相邻矩阵可以作为矩阵的名称返回,在这种情况下,行和列的顺序是 ABC,XYZ,PQR。第 4 列包含未链接到任何其他名称的记录数。例如,对于 ID“IM-1”,只有一个记录“ABC”,对于 IM-3 和 IM-4,PQR 与任何其他名称类似,因此在 3x4 中有 2 个。条目数取决于IM-5 的链接,创建的链接是 PQR-XYZ、XYZ-PQR、PQR-ABC、ABC-PQR、XYZ-ABC 和 ABC-XYZ 在这里我们可以看到 XYZ-PQR、ABC-PQR 和 ABC- XYZ 可能会被混淆为重复项,但它是必需的
-
谢谢,这更清楚了。我更新了我的答案,并包含了一个获取最后一列的函数。
标签: python-3.x pandas numpy matplotlib chord-diagram