[英]Problem with building heatmap based on pivot_table
我有一个 dataframe 有很多列,我将只显示这个问题中重要/相关的列:
data[['HomePlanet', 'CryoSleep', 'Transported']].head()
HomePlanet CryoSleep Transported
0 Europa False False
1 Earth False True
2 Europa False False
3 Europa False False
4 Earth False True
data[['HomePlanet', 'CryoSleep', 'Transported']].dtypes
HomePlanet object
CryoSleep boolean
Transported boolean
dtype: object
我想根据这个 pivot_table 制作一个热图:
result_1 = data.pivot_table(columns='HomePlanet', index='CryoSleep', values='Transported')
result_1
HomePlanet Earth Europa Mars
CryoSleep
False 0.320992 0.400172 0.276982
True 0.656295 0.989023 0.911809
但是,当我尝试使用 seaborn 构建热图时,出现错误:
sns.heatmap(result_1, annot=True, cmap="PiYG_r")
TypeError: Image data of dtype object cannot be converted to float
我尝试在 pivot_table 中交换列和索引,但得到了同样的错误:
result_2 = data.pivot_table(index='HomePlanet', columns='CryoSleep', values='Transported')
result_2
CryoSleep False True
HomePlanet
Earth 0.320992 0.656295
Europa 0.400172 0.989023
Mars 0.276982 0.911809
sns.heatmap(result_2, annot=True, cmap="PiYG_r")
TypeError: Image data of dtype object cannot be converted to float
我究竟做错了什么? 如何基于 pivot_table 构建热图?
感谢@JohanC。 我查看了 result_1 和 result_2 的数据类型,类型是 Float64:
result_1.dtypes
Output:
HomePlanet
Earth Float64
Europa Float64
Mars Float64
dtype: object
我使用以下行将所有类型更改为 float64:
for column in result_1.columns:
result_1[column] = result_1[column].astype('float64')
现在热图终于起作用了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.