a b c d e
原始矩阵 a b c a 0 1 1 1 1
b c e --> b 1 0 2 0 1 共现矩阵 共现矩阵对角线上一定是全零
a e d c 1 2 0 0 1
d 1 0 0 0 1
e 1 0 1 1 0
c a e d
那么 b 2 1 1 1 bc之间的边就是2,依此类推:ba之间的边就是1,be之间的边就是1,bd之间的边就是1, 所有b元素的边加起来就是b的度,为什么要介绍这些概念呢?因为在复杂网络数据可视化中将会用到这些概念。以b为结点,将a,c,d,e四个结点进行联结,那么度越大,节点越大,边越大,线越粗。最终目标是将冰与火之歌的人物关系图谱通过可视化的方式做出来。
import pandas as pd
df = pd.DataFrame({'TFD' : ['AA', 'SL', 'BB', 'D0', 'Dk', 'FF'],
'Snack' : ['1', '0', '1', '1', '0', '0'],
'Trans' : ['1', '1', '1', '0', '0', '1'],
'Dop' : ['1', '0', '1', '0', '1', '1']}).set_index('TFD')
print df
>>>
Dop Snack Trans
TFD
AA 1 1 1
SL 0 0 1
BB 1 1 1
D0 0 1 0
Dk 1 0 0
FF 1 0 1
[6 rows x 3 columns]
Dop Snack Trans
Dop 0 2 3
Snack 2 0 2
Trans 3 2 0
这是在stackoverflow上看到一个关于pandas构建共现矩阵的题,那么为什么会从上面的矩阵转换成下面的矩阵呢?先看原始矩阵,在第一行中Dop与Snack在AA中共同出现1次,在第三行中Dop与Snack在BB中共同出现1次,以此类推。最终就得到了下面的矩阵。