我正在尝试为已确认的Covid 19案例制作热图电影。
我的数据集是一个pd.dataFrame
,其列为Date
,Latitude
,Longitude
,Confirmed
。
我的问题是我不知道如何在Folium.plugin.HeatmapWithTime
中输入确认值作为输入。
我尝试使用:
new_map = folium.Map(location=[0, 0], tiles= "cartodbpositron",min_zoom=2, zoom_start=2, max_zoom=3)
df['Lat'] = df['Lat'].astype(float)
df['Long'] = df['Long'].astype(float)
Confirmed_df = df[['Lat', 'Long','Confirmed']]
hm = plugins.HeatMapWithTime(Confirmed_df,auto_play=True,max_opacity=0.8)
hm.add_to(new_map)
new_map
df看起来像:
Date LAT LONG Confirmed
2020/04/26 48.847306 2.433284 6500
2020/04/26 48.861935 2.441292 4800
2020/04/26 48.839644 2.655109 9000
2020/04/25 48.924351 2.386369 12000
2020/04/25 48.829872 2.376677 0
答案 0 :(得分:0)
您应该在输入HeatMapWithTime()函数之前对数据进行预处理。此处的document和example有用。
在您的情况下,输入应为[纬度,经度,重量]的列表,应将“确认”列用作重量。首先,您需要将“确认”值标准化为(0,1]。
df['Confirmed'] = df['Confirmed'] / df['Confirmed'].sum()
然后,您可以像这样进行预处理:
df['Date'] = df['Date'].sort_values(ascending=True)
data = []
for _, d in df.groupby('Date'):
data.append([[row['lat'], row['lng'], row['Confirmed']] for _, row in d.iterrows()])
最后,像执行操作一样,使用数据输入功能来运行HeatMapWithTime():
hm = plugins.HeatMapWithTime(data, auto_play=True,max_opacity=0.8)
hm.add_to(new_map)
new_map