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

使用Plotly Mapbox绘制Choropleth地图时Excel数值显示为0

问题:Plotly Choropleth地图无法正确读取Excel中「Buscas」列数值,所有区域显示0

我在制作带Choropleth地图的仪表盘时,遇到了一个问题:Excel文件里的「Buscas」列数值无法被正确读取,地图所有区域都显示0。

读取Excel的代码:

df = pd.read_excel("MOVIDA.xlsx", sheet_name=0)

文件包含UF、Estado、Buscas等列,绘制地图的代码:

fig = px.choropleth_mapbox(df, locations="UF",
                       center={"lat": -16.95, "lon": -47.78},
                       geojson=brazil_states, color_continuous_scale="Redor", opacity=0.5,
                       zoom=4,
                       color="Buscas",
                       hover_data={"Estado": True})

补充信息:发现地图似乎取各区域的最低值,把所有0替换成其他值后就能正常显示,我原本以为Plotly会自动汇总该列的数值。


解决方案

  • 处理重复的UF条目:Plotly的px.choropleth_mapbox不会自动对同一locations(此处为UF)的多行数据做聚合,默认会取该分组的最小值或第一条记录值。如果你的DataFrame里同一个UF对应多条记录,必须先手动汇总「Buscas」列:

    # 按UF和Estado分组,对Buscas列求和(可根据需求换成mean/max等)
    df_agg = df.groupby(["UF", "Estado"])["Buscas"].sum().reset_index()
    
    # 使用汇总后的数据集绘制地图
    fig = px.choropleth_mapbox(df_agg, locations="UF",
                           center={"lat": -16.95, "lon": -47.78},
                           geojson=brazil_states, color_continuous_scale="Redor", opacity=0.5,
                           zoom=4,
                           color="Buscas",
                           hover_data={"Estado": True})
    
  • 检查「Buscas」列数据类型:确保该列是数值类型(int/float),如果是字符串格式,Plotly无法正确解析数值,会默认显示0。可通过以下代码排查并转换:

    # 查看列类型
    print(df["Buscas"].dtype)
    
    # 转换为数值类型,无法转换的内容会被设为NaN
    df["Buscas"] = pd.to_numeric(df["Buscas"], errors="coerce")
    
  • 清理数据中的无效0值:如果数据本身存在大量0值,会导致颜色映射的最小值被拉到0,从而所有区域显示0。替换0值后正常显示,说明0值是干扰项,可根据业务逻辑将其替换为NaN或其他合理数值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:15:37