python - 从简单的熊猫数据框创建矩阵
问题描述
我有一个包含两列的简单数据框,并希望将其转换为具有相同列数和行数的矩阵。
我有几个组合作为行,并希望将它们复制到列中,以便在视觉级别(可能是和弦图)上查看关系的强度。
这是我正在使用的数据框示例:
variables count
a 13
b 9
c 8
d 6
e 10
f 12
g 9
h 7
a_b 7
a_b_h 8
这是我想要的输出,考虑到我有几种组合,而不仅仅是成对的。
a b c d e f g h a_b a_b_h
a 13 7 0 0 0 0 0 0 0 0
b 7 9 0 0 0 0 0 0 0 0
c 0 0 8 0 0 0 0 0 0 0
d 0 0 0 6 0 0 0 0 0 0
e 0 0 0 0 10 0 0 0 0 0
f 0 0 0 0 0 12 0 0 0 0
g 0 0 0 0 0 0 9 0 0 0
h 0 0 0 0 0 0 0 7 0 0
a_b 0 0 0 0 0 0 0 0 7 0
a_b_h 0 0 0 0 0 0 0 0 0 8
依此类推,所有组合。
目的是然后构建一个如下图所示的和弦图 - 它显示了变量之间关系的强度
解决方案
使用np.diag
:
df = pd.DataFrame({"variables": ["a", "b", "c", "d", "e", "f", "g", "h", "a_b", "a_b_h"],
"count": [13, 9, 8, 6, 10, 12, 9, 7, 7, 8]})
df2 = pd.DataFrame(np.diag(df["count"]), columns=df["variables"], index=df["variables"])
输出:
variables a b c d e f g h a_b a_b_h
variables
a 13 0 0 0 0 0 0 0 0 0
b 0 9 0 0 0 0 0 0 0 0
c 0 0 8 0 0 0 0 0 0 0
d 0 0 0 6 0 0 0 0 0 0
e 0 0 0 0 10 0 0 0 0 0
f 0 0 0 0 0 12 0 0 0 0
g 0 0 0 0 0 0 9 0 0 0
h 0 0 0 0 0 0 0 7 0 0
a_b 0 0 0 0 0 0 0 0 7 0
a_b_h 0 0 0 0 0 0 0 0 0 8
推荐阅读
- python - Ansible for 循环与多个序列
- facebook - 是否可以使用过期令牌获得扩展的 facebook accessToken?
- angular - 来自 Protractor e2e 测试的 Ag-grid 访问和编辑单元格
- c# - 文本文件到数组到 Excel 导出数据文本更改
- c - 从选项 1 返回多个输出,如何将其存储在主函数中并将其用于选项 3
- java - log4j2中哪个方法实际执行翻转
- amazon-web-services - Amazon EC2 pricing for blocked IP addresses
- javascript - calculation of increment value in react js
- r - 字体未在 showtext font_add_google 中加载
- minecraft - CustomInventory on click wont work bukkit