You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

seaborn绘制heatmap报错:无法将'0:00'字符串转为float的ValueError

错误产生原因

sns.heatmap() 要求传入的绘图数据源所有值均为数值类型,内部会将所有数据转换为浮点数完成颜色映射。
你在分组统计后执行了reset_index()操作,原本作为行索引的interval时间文本列被转为普通数据列,该列存储的"0:00"类字符串无法转换为浮点数,直接触发报错。实际上interval是热力图y轴的分类标签,本就不应该作为热力值数据传入绘图逻辑。

修复方案

绘图前将interval列重新设置为DataFrame的行索引即可,seaborn会自动将DataFrame的行索引作为y轴刻度标签、列名作为x轴刻度标签,不会将索引内容纳入热力值的数值计算,同时你之前做的分类排序逻辑会保留,时间刻度会严格按照你定义的0:00-23:30顺序排列。
完整修正后的绘图代码:

# 排序后将interval设为行索引
p7 = p7.set_index('interval')

plt.figure(figsize=(15,12))
sns.heatmap(p7, cmap="Greens")
plt.show()

如果需要保留interval作为普通列备用,也可以在绘图时只筛选数值列传入,不需要修改原p7结构:

plt.figure(figsize=(15,12))
# 排除interval列,仅传入星期几对应的数值计数列,手动指定y轴刻度标签
sns.heatmap(p7.drop(columns='interval'), cmap="Greens", yticklabels=p7['interval'])
plt.show()

两种方法效果一致,第一种写法更简洁。

内容的提问来源于stack exchange,提问作者octaviodiego78

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 21:48:48