首页 > 解决方案 > 尝试在 seaborn 中显示交叉表时收到 TypeError

问题描述

我正在尝试从交叉表创建一个基本的条形图。

我写:

# Crosstab: Impact YN x Engagement
impact_action_table_eng = 
pd.crosstab(df.Engagement,df.impact_action_yn_new)
print(impact_action_table_eng)

impact_action_yn_new    0    1
Engagement                    
0                     566  310
0                       1    1
1                     676  410
2                       0    1
2a                    508  404
2b                    587  303
3                     683  671
4                     172  357
5                      31  237

然后想可视化它。

# Crosstab: Impact YN x Engagement - Viz

stacked_imp_eng = impact_action_table_eng.stack().reset_index().rename(columns={0:'value'})
sns.barplot(x=stacked_imp_eng.Engagement, y=stacked_imp_eng.impact_action_yn_new, hue=stacked_imp_eng.impact_action_yn_new)

我收到一个 TypeError: unsupported operand type(s) for /: str and int。我认为这意味着需要更改数据类型,但我不确定是哪个......或者这是否是正确的更改(我尝试更改为几种数据类型但仍然出现类型错误)。

Impact_action_yn_new 是一个 int64 并且 eng 是一个 str。然后我将 Impact_action_yn_new 转换为 str 并没有解决问题。

我需要在这里做什么?我一直在谷歌搜索并被卡住了。

谢谢!

标签: pythonpandastypeerrorseaborn

解决方案


您同时拥有两者yhue设置为同一列,impact_action_yn_new. 这可能是错误的根源,尽管我无法使用 Seaborn 0.9.0 重现它。在任何情况下,具有y等于hue可能没有那么有用!

使用y='value'andhue='impact_action_yn_new'给出以下内容:

sns.barplot(x=stacked_imp_eng.Engagement, 
            y=stacked_imp_eng.value,
            hue=stacked_imp_eng.impact_action_yn_new)

条形图结果


推荐阅读