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

绘制Choropleth地图时触发TypeError错误,寻求解决方法

解决Choropleth地图的TypeError问题

错误原因

这个错误是因为Plotly在匹配DataFrame数据与GeoJSON地理数据时,使用了非法的键类型。核心原因是未明确指定GeoJSON中用于匹配的字段,导致Plotly内部尝试用错误的键进行匹配;或者DataFrame的id列与GeoJSON中的标识字段不匹配。

解决方案

1. 确认GeoJSON的匹配字段

你使用的阿根廷省份GeoJSON中,每个地理特征的properties字段包含codigo_indec(省份编码)、nombre(省份名称)等标识项,需要和DataFrame的id列内容对应。

2. 修正代码

  • 补充缺失的库导入(pandas和plotly.express)
  • 指定featureidkey参数,明确GeoJSON中用于匹配的字段
  • 确保DataFrame的id列与GeoJSON字段类型一致

修正后的代码示例:

import pandas as pd
import requests
import plotly.express as px

# 读取CSV数据
df3 = pd.read_csv('potenciar-trabajo-total-titulares-2022-10-01.csv', low_memory=False)

# 获取阿根廷省份地理数据
repo_url = 'https://infra.datos.gob.ar/catalog/modernizacion/dataset/7/distribution/7.12/download/provincias.geojson'
ar_regions_geo = requests.get(repo_url).json()

# 确保id列类型与GeoJSON匹配(如果GeoJSON的codigo_indec是字符串)
df3['id'] = df3['id'].astype(str)

# 生成Choropleth地图
fig = px.choropleth(
    df3,
    locations="id",
    geojson=ar_regions_geo,
    color="titulares",
    # 指定GeoJSON中用于匹配的字段,根据你的DataFrame id列内容选择
    featureidkey="properties.codigo_indec"
    # 如果id列是省份名称,改用:featureidkey="properties.nombre"
)

fig.show()

3. 额外检查点

  • 确保DataFrame的id列没有空值或异常值
  • 如果用省份名称匹配,要保证大小写、重音符号完全一致(比如“Buenos Aires”和“buenos aires”会匹配失败)

内容的提问来源于stack exchange,提问作者juan esteban arilla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:50:15