Skip to main content
 首页 » 编程设计

Python Folium Choropleth map KeyError : None

2024年10月17日26落叶无声

我有兴趣使用 Python 在县级创建 Choropleth map 。当我运行我的代码而不尝试将数据绑定(bind)到它时,我得到了漂亮的县界线。但是,每当我尝试绑定(bind)数据时,我都会收到 KeyError: None。

从我的搜索来看,这似乎是由于 GeoJson 中的值与数据文件中的值不匹配...但我手动进入并检查并已经编辑了数据,所以它们完全相同行数和完全相同的值...仍然出现相同的错误。非常令人沮丧:(

我的代码:

import folium 
from folium import plugins 
from folium.plugins import Fullscreen 
import pandas as pd 
 
county_geo = 'Desktop\counties.json' 
county_data = 'Desktop\fips.csv' 
 
 
# Read into Dataframe, cast to string for consistency. 
df = pd.read_csv(county_data, na_values=[' ']) 
df['FIPS'] = df['FIPS'].astype(str) 
 
 
m = folium.Map(location=[48, -102], zoom_start=3) 
 
m.choropleth(geo_path=county_geo,  
    data=df, 
    columns=['FIPS', 'Value'], 
    key_on='feature.properties.id', 
    fill_color='PuBu') 
 
Fullscreen().add_to(m) 
m 

还有我的错误:

按键错误:无

输出[32]: folium.folium.Map 位于 0x10231748

任何在县级为您工作的建议或示例代码/文件都将不胜感激!

编辑:

我发现了我自己的错误。

key_on='feature.properties.id', 

应该是:

key_on='feature.id', 

请您参考如下方法:

import json 
keys=[k['id'] for k in json.load(open('Desktop\counties.json')['features']] 
missing_keys=set(keys)-set(plot_data['FIPS']) 
dicts=[] 
for k in missing_keys: 
   row={} 
   dicts.append({'FIPS': k, 'Value': 0}) 
dicts 
mapdata = country_data 
mapdata = mapdata.append(dicts, ignore_index=True) 

这将在 DataFrame 中找到缺失的键并创建具有 0 值的新行。 这可能会解决您的关键错误问题