我有一个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
这个矩阵是对称的,这就是为什么我只写上对角线元素的原因
答案 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