I have a csv that contains numerous different Lat Longs in the exact format shown:
39.360611,-74.431877
Running the following code:
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")
Gives me the following Output
[['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.
It seems as though python is recognizing the - symbol as a string rather than piece of negative number
When attempting various things, I found a Pandas Dataframe to be the best way to get the Data from CSV to heatmap. The Code looks like the following:
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")
Notice the dropna
as for some reason it always had a blank line entered at the end and this solved the issues that would be hit when passing such information to the heatmap