我有一个像这样的数据框
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 轴来表示动物和国家,同时让颜色作为值
- 所以我尝试了十六进制图。
当我尝试时
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'
。但是,如果我对 x、y 和 C 使用 value
,则不会发生这种情况 - 我想这是因为 pandas 想要数值。如何处理离散数据(动物/国家)?
我考虑为每个轴分配一个数字并制作一个自定义轴,例如 How to plot hexbin with dates in matplotlib and pandas?建议,但我觉得可能有更简单的方法。感谢任何帮助,谢谢。
最佳答案
您只想要热图吗?
import seaborn as sns
a2 = a.pivot_table( index='animal', columns='country', values='value', fill_value=0 )
sns.heatmap(a2)
顺便说一句,作为一般建议,您可能还希望将值存储为分类值,而不是字符串对象来存储此类内容,尽管在此使用 pivot_table
使得在此特定示例中没有必要。
关于python - 如何使用 Pandas 和离散轴绘制 hexbin? (或者,任何基于颜色的绘图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31365852/