使用Seaborn中的2个其他分类变量作为行和列绘制分类变量

时间:2017-07-21 15:18:17

标签: python seaborn

我正在尝试使用row作为Gender并将列设置为Self Employed来绘制贷款状态。

g=sns.FacetGrid(train,row='Gender',col='Self_Employed',size=2.2,aspect=1.6)
g.map(plt.hist,'Loan_Status')
g.add_legend()
plt.show()

错误是 - TypeError:无法连接'str'和'float'对象

1 个答案:

答案 0 :(得分:0)

您遇到的问题是Loan_Status至少包含一个字符串。

请参阅以下示例。

train = pd.DataFrame({'Gender':['Male','Female','Male','Female']*3,
                      'Self_Employed':['Yes','Yes','No']*4,'Somevalue':[1,2,3,4]*3, 'String':['yes','No','No']*4})

g=sns.FacetGrid(train,row='Gender',col='Self_Employed',size=2.2,aspect=1.6)
g.map(plt.hist,'Somevalue')
g.add_legend()
plt.show()

此图片中的结果。

enter image description here

然而,当我们尝试对仅由字符串组成的String执行相同操作时。

g=sns.FacetGrid(train,row='Gender',col='Self_Employed',size=2.2,aspect=1.6)
g.map(plt.hist,'String')
g.add_legend()
plt.show()

我得到了同样的错误。

TypeError: unorderable types: str() < float()

要解决您的问题,您必须检查Loan_Status列并将字符串(我认为是标签)编码为数字。您可以查看sklearn label encoder为您执行此操作。或者自己写一些代码来为你做这件事。