не работает карта choropleth usind folium code

#python #pandas #numpy

#python #панды #numpy

Вопрос:

я пытаюсь создать карту choropleth с помощью folium, и это мой код:

 import pandas as pd
import numpy as np

df3 = pd.read_csv(r'crime in SF.csv')
count = ['Count']
df4 = df3.groupby('Neighborhood')[count].sum()
df4.reset_index(inplace = True)

df4['Count'] = df4['Count'].astype(int)

data = {"Neighborhood": df4["Neighborhood"], 'Count': df4['Count']}
df5= pd.DataFrame(data)
 

введите описание изображения здесь

 import json
sf= json.load(open('san-francisco.geojson', 'r'))
sf= r'san-francisco.json'

import folium

world_map=folium.Map([37.77, -122.42], zoom_start=12, tiles='Mapbox Bright')


threshold_scale = np.linspace(df5['Count'].min(),
                          df5['Count'].max(),
                          6, dtype= int)
threshold_scale = threshold_scale.tolist() 
threshold_scale[-1]= threshold_scale[-1]   1

folium.Choropleth(geo_data= sf, 
             name ='choropleth', 
             data= df5,
             columns= ['Neighborhood','Count'],
             key_on='feature.properties.OBJECTID',
             color='YlOrRd',
             highlight=True,
             fill_opacity = 0.7,
             line_opacity=0.2,
             legend_name='Crime Rate in San Fancisco',
             threshold_scale=threshold_scale,
             reset=True).add_to(world_map)

folium.LayerControl().add_to(world_map)




display(world_map)
 

введите описание изображения здесь

он всегда выдает ошибку о чем-то в ячейках (см. Изображение 2) и говорит что-то о гистограмме, хотя я не писал никакого кода о гистограммах

Ответ №1:

У вас проблема с ячейками в вашей переменной threshold_scale . Вы можете распечатать содержимое этой переменной, чтобы понять проблему. Вы указываете, что хотите иметь ячейки в виде int чисел, и я думаю, что numpy хранит его в виде целого числа из 32 бит (или меньше), поэтому максимальное число, которое вы можете использовать, равно 2147483647, а ваши значения в df5 выше этого числа. Чтобы решить вашу проблему, вы можете использовать int64 вместо :

 threshold_scale = np.linspace(df5['Count'].min(),
                          df5['Count'].max(),
                          6, dtype= np.int64)