繁体   English   中英

基于 pivot_table 构建热图的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM