随时间变化的大叶草热图COVID 19

时间:2020-04-28 14:47:08

标签: python pandas heatmap folium

我正在尝试为已确认的Covid 19案例制作热图电影。

我的数据集是一个pd.dataFrame,其列为DateLatitudeLongitudeConfirmed

我的问题是我不知道如何在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  

1 个答案:

答案 0 :(得分:0)

您应该在输入HeatMapWithTime()函数之前对数据进行预处理。此处的documentexample有用。

在您的情况下,输入应为[纬度,经度,重量]的列表,应将“确认”列用作重量。首先,您需要将“确认”值标准化为(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