我有一个像
这样的DataFrame animal country value
0 elephant India 5
1 camel Iran 7
2 elephant Cameroon 1
3 eagle USA 2
4 turtle Iran 3
我希望能够比较特定国家的动物和某个国家的动物。我认为最好的方法是使用x / y轴来表示动物和国家,同时让颜色为value
- 所以我尝试了一个hexbin图。
当我尝试
时a = pd.DataFrame({
'animal': ['elephant', 'camel', 'elephant', 'eagle', 'turtle'],
'country': ['India', 'Iran', 'Cameroon', 'USA', 'Iran'],
'value': [5, 7, 1, 2, 3]
})
a.plot(kind = 'hexbin', x = 'animal', y = 'country', C = 'value')
我得到KeyError: 'animal'
。但如果我对value
,x
和y
使用C
,则不会发生这种情况 - 我想这是因为pandas需要数值。如何使用离散数据(动物/国家)?
我考虑过给每个人分配一个数字并制作像How to plot hexbin with dates in matplotlib and pandas?这样的自定义轴,但我觉得可能有一种更简单的方法。任何帮助表示感谢,谢谢。
答案 0 :(得分:2)
你只想要一张热图吗?
import seaborn as sns
a2 = a.pivot_table( index='animal', columns='country', values='value', fill_value=0 )
sns.heatmap(a2)
顺便说一下,作为一般建议,您可能还希望将值存储为分类而不是字符串对象,但这里使用pivot_table
使得在此特定示例中不需要它。