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

Plotly Go热力图未显示DataFrame全部行的问题解决请求

解决Plotly热力图缺失行的问题

问题根源

热力图缺失行的核心原因是**pivot_table生成的DataFrame索引(Hour)不完整**:原始数据中部分Hour没有对应记录时,pivot_table默认只会保留存在数据的Hour值,导致后续热力图的y轴缺少这些行。

解决步骤

1. 检查当前DataFrame的索引

先确认缺失的Hour是否存在于df的索引中:

print(df.index)

如果输出的索引没有包含所有预期的小时(比如0-23),说明需要补全索引。

2. 补全Hour索引

方法一:创建pivot_table时保留所有Hour行

修改pivot_table的参数,添加dropna=False,强制保留所有Hour的行(即使该行无数据,值为NaN):

df = result.pivot_table(
    index='Hour', 
    columns='Weekday', 
    values='Measurment', 
    aggfunc='sum', 
    margins=True, 
    margins_name='Total',
    dropna=False  # 关键:保留所有Hour行
)

方法二:手动生成完整索引并重新对齐

如果原始数据的Hour列本身就缺少部分小时值,需要手动生成完整的小时范围,再重新索引df:

import pandas as pd

# 生成完整的小时索引(根据实际Hour的取值范围调整,比如0-23)
full_hours = pd.Index(range(24), name='Hour')
# 保留原有的'Total'行,将完整小时索引与Total合并
full_index = full_hours.append(pd.Index(['Total']))

# 重新索引df,缺失值填充为0(或NaN,根据需求选择)
df = df.reindex(full_index, fill_value=0)

3. 重新绘制热力图

补全索引后,再用原代码绘制热力图即可显示所有行:

import plotly.graph_objects as go

fig = go.Figure(data=go.Heatmap(
    z=df.values,
    x=df.columns,
    y=df.index,
    hoverongaps=False,
    # 可选:设置NaN/0值的显示颜色,优化视觉效果
    colorscale='Viridis',
    zmin=0
))
fig.show()

额外注意事项

  • 如果Hour是字符串类型(比如'00'、'01'),生成full_hours时要对应字符串格式,比如full_hours = pd.Index([f"{h:02d}" for h in range(24)], name='Hour')。
  • 若不需要Total行,可以去掉margins=True参数,简化索引补全的步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 11:07:17