【问题标题】:Python Folium Choropleth Map KeyError: NonePython Folium Choropleth Map KeyError:无
【发布时间】:2016-06-24 13:20:22
【问题描述】:

我对使用 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

我的错误:

密钥错误:无

输出[32]: folium.folium.Map 在 0x10231748

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

编辑:

我发现了自己的错误。

key_on='feature.properties.id',

应该是:

key_on='feature.id',

【问题讨论】:

    标签: python dictionary keyerror choropleth folium


    【解决方案1】:
    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 值的新行。 这可能会解决您的关键错误问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      相关资源
      最近更新 更多