如何为虚拟变量及其组合创建值的汇总矩阵

时间:2019-02-11 13:44:48

标签: python python-3.x pandas

我有一个pandas数据框:

    import pandas as pd

       df = pd.DataFrame({'dummy_1' : [0, 0, 0, 1, 1, 0],
                          'dummy_2' : [1, 1, 0, 0, 1, 1],
                          'dummy_3' : [1, 1, 1, 0, 0, 0]})

最后我要拥有的是“相关矩阵类型”,但不是相关,而是对每个变量ones (1s)具有“每个变量有多少ones (1s)

所以在我的示例中,矩阵应如下图所示

        dummy_1 dummy_2 dummy_3
dummy_1   2/6     1/6     0/6
dummy_2           4/6     2/6
dummy_3                   3/6

这个矩阵是对称的,这就是为什么我只写上对角线元素的原因

1 个答案:

答案 0 :(得分:2)

使用dot

import pandas as pd

df = pd.DataFrame({'dummy_1': [0, 0, 0, 1, 1, 0],
                   'dummy_2': [1, 1, 0, 0, 1, 1],
                   'dummy_3': [1, 1, 1, 0, 0, 0]})


result = pd.DataFrame(df.T.dot(df) / len(df), columns=df.columns, index=df.columns)
print(result)

输出

          dummy_1   dummy_2   dummy_3
dummy_1  0.333333  0.166667  0.000000
dummy_2  0.166667  0.666667  0.333333
dummy_3  0.000000  0.333333  0.500000