Время прочтения: 3 мин.
Открытые данные от Университета Джона Хопкинса можно найти в свободном доступе на гитхабе (ссылка).
Для этого мы будем использовать, так называемые фоновые картограммы, на которых насыщенностью цвета изображают интенсивность какого-либо показателя (ссылка). С помощью таких карт мы сможем проанализировать ситуацию с достаточно малым количеством строк кода. Для этого будем использовать библиотеку folium (ссылка). Данный инструментарий разработан на языке python и позволяет нам визуализировать интерактивные карты прямо в ячейках ноутбука с помощью бесплатных карт, которые находятся в открытом доступе.
Для начала импортируем нужные библиотеки и загружаем наш датасет.
import pandas as pd
import folium
df = pd.read_csv("02-15-2021.csv")
Создадим базовую карту, чтобы посмотреть на нашу первую карту. Для нее укажем тип, первичную локацию, размер приближения.
m = folium.Map(tiles = 'Stamen Terrain', location = [56.3287, 44.002], min_zoom = 10)
m
Далее можем нарисовать ту самую фоновую картограмму, о которой шла речь ранее. Для этого нужно получить данные и сгенерировать новый цветной слой на нашей карте.
url = 'https://raw.githubusercontent.com/python-visualization/folium/master/examples/data'
country_shapes = f'{url}/world-countries.json'
folium.Choropleth(
geo_data = country_shapes,
min_zoom = 2,
name = 'Covid-19',
data = df,
columns = ['Country_Region', 'Confirmed'],
key_on = 'feature.properties.name',
fill_color = 'OrRd',
nan_fill_color = 'black',
legend_name = 'Total Confirmed COVID cases',
).add_to(m)
m
Также мы можем добавить на карту маркеры с подробной информацией о данной части карты. Они кликабельны, поэтому при нажатии будут показывать нужные нам данные. Будем показывать там количество заболевших. Оставим только нужные столбцы и нарисуем нанесем маркеры на карту.
df_geo = df[['Lat', 'Long_', 'Confirmed']]
df_geo = df_geo.dropna()
m = folium.Map(tiles = 'Stamen Terrain', min_zoom = 1.5)
for i in range(df_geo.shape[0]):
m.add_child(folium.CircleMarker(location = [df_geo['Lat'].iloc[i], df_geo['Long_'].iloc[i]], radius=1,
popup = 'Confirmed: {}'.format(int(df_geo['Confirmed'].iloc[i]), weight = 1),
color = 'red'))
m
Подводя итоги можно отметить, что Folium интуитивно понятен для пользователя, как способ визуализации пространственных данных. К плюсам можно отнести наличие разных карт, анимаций и сохранение их в HTML формат для дальнейшей аналитики. Из минусов — не всегда работает без интернета.