Pandas浮点列和字符串列之间的相关矩阵

Pandas correlation maxtrix between float columns and string columns

如何在 Pandas 中获取浮点列和字符串列之间的相关矩阵?使用 df.corr() 会自动删除字符串列。我尝试了 pd.get_dummies(),但这会“加宽”数据框并在加宽的列中 returns 1/0。

目的是绘制相关性的热图。当然'dog'和'dog'会有统一的相关性,但是我想看看'dog'和x,'pig'和x等的相关性

df = pd.DataFrame(
    {'x': [3,2,5,1,1,0,7],
     'category': ['dog','dog','cat','pig','dog','cat','pig']}
)

    x   category
0   3   dog
1   2   dog
2   5   cat
3   1   pig
4   1   dog
5   0   cat
6   7   pig

I tried pd.get_dummies(), but this "widens" the dataframe and returns 1/0 in the widened columns.

如果我没理解错的话,这正是您需要的。它"one-hot encodes"是名义变量,这样我们就不会人为地引入序数关系。

df = pd.get_dummies(df)

#    x  cat  dog  pig
# 0  3    0    1    0
# 1  2    0    1    0
# 2  5    1    0    0
# 3  1    0    0    1
# 4  1    0    1    0
# 5  0    1    0    0
# 6  7    0    0    1

那你就可以用corr()(至于多少有意义,那是另外一回事了):

df.corr()

#             x       cat       dog       pig
# x    1.000000 -0.058610 -0.267516  0.351659
# cat -0.058610  1.000000 -0.547723 -0.400000
# dog -0.267516 -0.547723  1.000000 -0.547723
# pig  0.351659 -0.400000 -0.547723  1.000000