Раскрасьте карту Choropleth правильными цветами #Python

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from mpl_toolkits.mplot3d import Axes3D
import seaborn as sns
import folium
import geojson

data= pd.read_csv('dans-ma-rue.csv', delimiter=';')
data=data.replace(to_replace='Mobiliers urbains dégradés (arrachés, cassés, tordus, bancals, en panne... )', value='Mobiliers urbains dégradés')

импортируем карту и получаем файл geo_json:

macarte = folium.Map(location=[48.86,2.35], zoom_start=12.5,)
ARDT = r'arrondissements.geojson'

Вот ссылка на файл Geo Json: https://data.opendatasoft.com/explore/dataset/arrondissements@parisdata/?flg=fr

# calculating total number of incidents per district
data2 = pd.DataFrame(data['ARRONDISSEMENT'])
data2 = pd.DataFrame(data2['ARRONDISSEMENT'].value_counts().astype(float))
data2.to_json('crimeagg.json')
data2 = data2.reset_index()
data2.columns = ['ARRONDISSEMENT', 'Nombre']
data2['ARRONDISSEMENT']=data2['ARRONDISSEMENT'].astype(int)
data2['ARRONDISSEMENT2']=data2['ARRONDISSEMENT'].apply(lambda x : str(x)+"ème Ardt")

Затем создаем карту:

macarte.choropleth(geo_data = ARDT,
    data = data2,
    columns = ['ARRONDISSEMENT','Nombre'],
    key_on = 'feature.properties.ARDT',
    fill_color = 'YlOrRd',
    fill_opacity = 0.7,
    line_opacity = 0.2,
    legend_name = 'Number of incidents per district')

display(macarte)

Код дает мне карту со всеми районами, но все одного цвета. Большое вам спасибо!

Dimitri

1 ответ

Я думаю key_on параметр задан неправильно. Это должно соответствовать тому, что у вас есть в файле geojson. Внутри нет атрибута ARDT properties, Вы должны использовать атрибут c_ar для однозначной идентификации района ("округ").

macarte.choropleth(geo_data = ARDT,
    data = data2,
    columns = ['ARRONDISSEMENT','Nombre'],
    key_on = 'feature.properties.c_ar',
    fill_color = 'YlOrRd',
    fill_opacity = 0.7,
    line_opacity = 0.2,
    legend_name = 'Number of incidents per district')

У меня была та же проблема, что и у вас, и этот ноутбук Jupyter помог мне.

Примечание: в соответствии с этим choropleth функция устарела и будет устаревшей и GeoJson следует использовать вместо Для меня они оба работали в конце.

Надеюсь, это поможет!

Другие вопросы по тегам