基于pivot_table绘制seaborn热力图报错的问题排查
问题原因与解决方法
错误的核心是你生成的pivot_table结果数据类型为object,而seaborn的heatmap要求输入数值类型(float/int)的数据。
解决步骤:
- 验证数据类型
先确认pivot_table的结果 dtype:
print(result_1.dtypes)
如果输出为object,说明数据因原数据中的缺失值或类型兼容问题被自动转为了object类型。
- 强制转换数据类型并绘图
将数据转为float类型后再绘制热力图:
import seaborn as sns import matplotlib.pyplot as plt # 转换为float类型 result_1 = result_1.astype(float) # 绘制热力图 sns.heatmap(result_1, annot=True, cmap="PiYG_r") plt.show()
也可以直接在绘图时完成转换:
sns.heatmap(result_1.astype(float), annot=True, cmap="PiYG_r") plt.show()
- 从源头避免类型问题(可选)
生成pivot_table时明确指定聚合函数,并用数值填充缺失值:
result_1 = data.pivot_table( columns='HomePlanet', index='CryoSleep', values='Transported', aggfunc='mean', fill_value=0.0 # 用0填充缺失值,防止NaN引发类型异常 )
之后直接调用heatmap即可正常绘制。
内容的提问来源于stack exchange,提问作者stukituk
相关产品推荐
相关产品推荐

