Python Folium Choropleth Map KeyError:无

时间:2016-06-24 13:20:23

标签: python dictionary keyerror choropleth folium

我有兴趣在县一级用Python创建Choropleth地图。当我运行我的代码而不尝试将数据绑定到它时,我得到了精美绘制的县行。但是每当我尝试绑定数据时,我都会得到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

我的错误:

KeyError:无

缺货[32]: folium.folium.Map at 0x10231748

非常感谢在县级为您工作的任何建议或示例代码/文件!

修改

我发现了自己的错误。

key_on='feature.properties.id',

应该是:

key_on='feature.id',

1 个答案:

答案 0 :(得分:2)

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的新行。 这可能会解决您的密钥错误问题