使用folium绘制choropleth map报ValueError缺失几何对象错误如何解决
错误原因分析
这个报错的核心原因是传入choropleth方法的GeoJSON数据格式不符合要求,具体问题出在这行代码:
world_geo=pd.read_json(JSON)
folium的choropleth()方法要求geo_data参数接收的是标准GeoJSON结构(字典类型)、GeoJSON文件路径或者可直接访问的GeoJSON在线链接,而你用pd.read_json()读取GeoJSON链接后,得到的是Pandas DataFrame格式,完全破坏了GeoJSON原本的features、geometry等层级结构,folium无法从中解析出地理边界信息,因此抛出缺少几何对象的错误。
修复方案
你可以选择两种方式修改:
- 直接把GeoJSON链接传给geo_data参数,不需要提前读取:
# 删除原来的world_geo=pd.read_json(JSON)这行,choropleth参数里直接填写链接即可 geo_data=JSON, - 如果你需要提前加载GeoJSON内容,用requests库读取后转成字典即可:
import requests world_geo = requests.get(JSON).json()
额外注意:你的移民数据里的国家名称,可能和GeoJSON里的
properties.name字段的国家名称存在不一致的情况(比如译名差异、国名全称简称差异),后续如果出现数据不匹配、地图无颜色渲染的问题,需要先对齐两边的国家名称字段。
内容的提问来源于stack exchange,提问作者OCM
相关产品推荐
相关产品推荐

