Листок фолиума вообще не окрашивает области почтового индекса - PullRequest
0 голосов
/ 09 июля 2020

Я использую Folium для создания отчета о доходах по почтовому индексу, чтобы определить, где sh новый офис.

Хотя кажется, что гео JSOn правильно накладывается на карту , это не похоже на тепловое сопоставление суммы дохода с соответствующими почтовыми индексами.

Имя функции в файле JSON - feature.properties.ZCTA5CE10

Как видно здесь , в первых нескольких строках файла. ZCTA5CE10 соответствует почтовому индексу. Вот ссылка на файл Geo JSON на GitHub. https://github.com/OpenDataDE/State-zip-code-GeoJSON/blob/master/tx_texas_zip_codes_geo.min.json

{"type":"FeatureCollection",
"features":[{
  "type":"Feature",
  "properties":
{"STATEFP10":"48","ZCTA5CE10":"75801","GEOID10":"4875801","CLASSFP10":"B5","MTFCC10":"G6350","FUNCSTAT10":"S","ALAND10":555807428,"AWATER10":6484251,"INTPTLAT10":"+31.7345202","INTPTLON10":"-095.5313809","PARTFLG10":"N"},"geometry":{"type":"Polygon","coordinates":[[[-95.680719,31.727999]

Мои данные о доходах - это файл CSV с 2 столбцами, ПОЧТОВЫЙ ИНДЕКС и АВГУСТ.

Пример CSV:

ZCTA5CE10,AUGUST
"76701",2676.89
"76643",8625.79
"76655",5618
"76710",23265.18
"76708",14618.35
"76706",14335.85
"76705",9338.44
"76633",4215.39
"76712",35488.02
"76657",10186.13
"76664",1361
"76711",2812.35
"76682",713

И, наконец, мой код.

import folium
from folium.plugins import MarkerCluster
import pandas as pd
import os
map = folium.Map(location=[31.5493, -97.1467],
                 default_zoom_start=15)

revdata = pd.read_csv(os.path.join('revenue.csv'))
revdata.info()

folium.Choropleth(geo_data="tx_texas_zip_codes_geo.min.json",
                data = revdata,
                columns = ['ZIP CODE', 'AUGUST'],
                key_on = 'feature.properties.ZCTA5CE10',
                fill_color='BuPu', fill_opacity=0.7, line_opacity = 0.2,
                legend_name = 'REVENUE BY ZIP').add_to(map)
marker_cluster = MarkerCluster().add_to(map)

map.save('mymap.html')

Я пробовал изменить почтовые индексы в своем CSV-файле, чтобы они были заключены в кавычки, но это ничего не меняет.

Идеи ?

1 Ответ

0 голосов
/ 10 июля 2020

Я понял, в чем проблема.

В точке revdata.info я увидел, что независимо от кавычек в моем первом столбце, столбец импортировался как целочисленный тип. Я обновил свою строку чтения CSV до revdata = pd.read_csv(os.path.join('revenue.csv'), dtype={'ZCTA5CE10': object}), в частности, обозначив, что первый столбец необходимо импортировать как строковый литерал, что позволяет правильно сравнивать его с почтовым индексом в Geo JSON.

В дополнение к этому я использовал PyGeoJ для очистки моего основного файла Geo JSON, чтобы исключить все неиспользуемые почтовые индексы в моем отчете о доходах (что уменьшило размер моей окончательной карты html с 87 МБ до 2,3).

...