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
如何在 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