从简单的熊猫数据框创建矩阵

时间:2019-07-11 22:17:51

标签: python python-3.x pandas numpy

我有一个具有两列的简单数据框,并希望将其转换为具有相同列和行数的矩阵。

我有几种组合作为行,并且想将它们复制到列中,以便在视觉上查看关系的强度(可能是和弦图)。

这是我正在使用的数据框的示例:

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

以此类推,并包含所有组合。

然后目的是建立一个类似于以下的和弦图-该图显示了变量之间关系的强度

1 个答案:

答案 0 :(得分:1)

使用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