Моя проблема в том, что пригороды не отображают правильный цвет на карте Фолиума.Например, Данденонг и Франкстон должны быть закрашены самым темным цветом, поскольку они имеют наибольшее число в кадре данных, но они затенены более светлым цветом.
В кадре данных отсутствуют некоторые пригороды.Эти пригороды окрашены в самый темный цвет.
Другая проблема заключается в том, что у csv есть все пригороды в верхнем регистре, но у геойсона есть смесь случаев, таких как "Frankston", "St Kilda" или "McKinnon".Было бы полезно, если бы код choropleth не заботился о случае.Я могу изменить текст в кадре данных, чтобы сделать «FRANKSTON», «Frankston» и «ST KILDA», «St Kilda», но «MCKINNON» на «McKinnon» оказывается немного хитрее.
СоздатьКадр данных
import csv
import pandas as pd
csv_path='Data_tables_Criminal_Incidents_Visualisation_year_ending_June_2018.csv'
df=pd.read_csv(csv_path)
with open(csv_path, 'r') as csvfile:
# creating a csv reader object
csvreader = csv.reader(csvfile)
# create a list of headings from the first row of the csv file
headings = next(csvreader)
# create a dictionary, where keys are Suburb/Town Name and values are number of occurences
# index 2 of the headings list are the suburbs
neighborhood_dict = df[headings[2]].value_counts().to_dict()
# make first letter uppercase eg St Kilda
neighborhood_dict = dict((k.title(), v) for k, v in neighborhood_dict.items())
# make neighborhood_list from neighborhood_dict
neighborhood_list=[]
for key, value in neighborhood_dict.items():
temp = [key,value]
neighborhood_list.append(temp)
# make dataframe from neighborhood_list
df = pd.DataFrame(neighborhood_list, columns=['Suburb','Count'])
print(df.to_string())
Создать карту
import folium
world_map = folium.Map(
location=[-38.292102, 144.727880],
zoom_start=6,
tiles='openstreetmap'
)
world_map.choropleth(
geo_data='vic.geojson',
data=df,
columns=['Suburb','Count'],
key_on='feature.properties.Suburb_Name',
fill_color='YlOrRd',
fill_opacity=0.7,
line_opacity=0.2,
legend_name='Crime Rate in Victoria'
)
world_map.save('index.html')