CSV в Folium HeatMap - PullRequest
       6

CSV в Folium HeatMap

0 голосов
/ 02 марта 2020

У меня есть CSV, который содержит множество различных длин Lat в указанном точном формате: 39.360611,-74.431877

Запуск следующего кода:

import csv
from folium import plugins

heatmap_map = folium.Map(location=[48, -102], zoom_start=3)

with open('geolocation.csv', "r") as f:
    reader = csv.reader(f)
    data = [[row[0], row[1]] for row in reader]
    print(data)

hm = plugins.HeatMap(data)
heatmap_map.add_children(hm)
f.close()

heatmap_map.save("heatmap.html") 

Дает мне следующий вывод

[['39.360611', '-74.431877']]
Traceback (most recent call last):
  File "C:\Users\dge\Anaconda3\lib\site-packages\folium\utilities.py", line 59, in validate_location
    float(coord)
ValueError: could not convert string to float: '-'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ".\heat.py", line 12, in <module>
    hm = plugins.HeatMap(data)
  File "C:\Users\dge\Anaconda3\lib\site-packages\folium\plugins\heat_map.py", line 67, in __init__
    for line in data]
  File "C:\Users\dge\Anaconda3\lib\site-packages\folium\plugins\heat_map.py", line 67, in <listcomp>
    for line in data]
  File "C:\Users\dge\Anaconda3\lib\site-packages\folium\utilities.py", line 63, in validate_location
    .format(coord, type(coord)))
ValueError: Location should consist of two numerical values, but '-' of type <class 'str'> is not convertible to float.

Кажется, что python распознает символ - как строку, а не как отрицательное число

1 Ответ

0 голосов
/ 02 марта 2020

При попытке выполнить различные действия я обнаружил, что Pandas Dataframe - это лучший способ получить данные из CSV в тепловую карту. Код выглядит следующим образом:

import folium
from folium import plugins
import pandas as pd

df = pd.DataFrame()
heatmap_map = folium.Map(location=[48, -102], zoom_start=3)

with open(r'geolocation.csv', "r") as f:
    df = df.append(pd.read_csv(f),ignore_index = True)
    df = df.dropna()

hm = plugins.HeatMap(df)
heatmap_map.add_child(hm)
f.close()

heatmap_map.save("heatmap.html")

Обратите внимание на dropna, так как по какой-то причине в конце всегда вводилась пустая строка, и это решало проблемы, возникающие при передаче такой информации в Heatmap

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...