我的pandas数据框有12列,但是seaborn heatmap仅绘制了9列(保留“ card”,“ owner”和“ selfemp”),如下所示:-
image of the correlation heatmap
我使用的代码是:
return Bindings.createDoubleBinding(
() -> a1.add(aib.add(atb.add(abb))).multiply((h.add(aip.add(atp.add(abp)))).divide(h)).get(),
a1,aib,aip,atb,atp,abb,abp
);
其中“数据”是我的数据框的名称,使用以下代码将其遗漏的3列从字符串转换为数字:-
sns.heatmap(data.corr(),xticklabels=True, yticklabels=True)
我希望热图在所有列之间建立关联,因为'卡片'是我的结果属性。
请帮助!
答案 0 :(得分:0)
您应将card,owner,selfemp列类型设置为int64
。
更改行的值不足以让熊猫了解此列现在是数字。将这些列转换为数字类型后,pandas的corr()
方法就会知道将它们考虑在内。请注意,seaborn的热图与此无关:问题data.corr()
所考虑的列。
import pandas as pd
import seaborn as sns
import numpy as np
df = pd.DataFrame({"Year":[2012, 2011, 2013, 2014], "card":["yes", "yes", "no", "yes"], "some_col":[1,0,1,0]})
df.loc[df.card == 'yes', "card"] = 1
df.loc[df.card == 'no', "card"] = 0
df["card"] = df["card"].astype('int64')
此玩具示例演示了如何正确更改列的值以及如何更改列的类型。
还要注意,我使用了df.loc
,因为您不想将其分配给副本(这样会警告您)。当然,有更好的方法是使用字典来更改值,但这暂时不相关。
最后一行告诉熊猫,“卡片”列现在为“ int64”类型。有了它,df.corr()可以正常工作。如果没有它,熊猫会认为“卡片”列是“对象”类型,因此在计算相关性时会忽略它。