2016-06-24 2 views
1

Je suis intéressé par la création de la carte Choropleth avec Python au niveau du comté. Quand je cours mon code sans essayer de lier des données, les lignes de comté sont magnifiquement dessinées. Cependant, chaque fois que j'essaye de lier mes données, je reçois KeyError: None. De ma recherche il est apparu comme si les valeurs dans le GeoJson ne correspondaient pas aux valeurs dans le fichier de données ... mais je suis entré manuellement et vérifié et ai déjà édité les données ainsi il y a exactement même nombre de lignes et exactement les mêmes valeurs ... toujours la même erreur. Très frustrant :(Python Folium Choropleth Map KeyError: Aucun

Mon code:

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 

Et mon erreur:

KeyError: Aucun

Out [32]: folium.folium.Map à 0x10231748

Tout conseil ou exemple de code/fichier qui fonctionne pour vous au niveau du comté serait très apprécié!

EDIT:

J'ai trouvé ma propre erreur.

key_on='feature.properties.id', 

devrait être:

key_on='feature.id', 

Répondre

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) 

Cela trouver les clés manquantes et de créer dataframe nouvelles lignes avec valeur 0. Cela peut résoudre votre problème d'erreur de clé