Как визуализировать пандемию коронавируса с помощью фоновых картограмм

Вступление

Я активный сторонник визуализации данных, потому как считаю, что это наиболее эффективный метод иллюстрации и объяснения сложной информации, особенно числовых данных, в простой и удобоваримой форме. Кроме того, при грамотном исполнении, инфографика при интерпретации данных позволяет уменьшить или смягчить систематические ошибки. Один из заслуживающих особого внимания видов визуализации — анимированные фоновые картограммы или хороплеты. Сейчас идет пандемия, накопились огромные датасеты, и я подумал, что самое время продемонстрировать на них всю силу анимированных картограмм.

Здесь вы узнаете:

  • Что такое хороплеты.
  • Когда и почему их наиболее эффективно использовать.
  • Код Python для создания ваших собственных фоновых картограмм

Хороплет или фоновая картограмма

Фоновая картограмма или хороплет — это тип тематической карты, на которой области или регионы заштрихованы пропорционально и в соответствии со значением заданного измерения данных.

Статические хороплеты наиболее полезны, когда надо сравнить какие‑то показатели по регионам. Например, сравнить уровень преступности в данный момент в каждом субъекте Российской Федерации, что можно визуализировать с помощью статической фоновой картограммы.

Анимированная или динамическая фоновая картограмма похожа на статическую, за исключением того, что добавляется время. Это третье измерение делает визуализацию исключительно интересной и мощной.

Визуализация пандемии коронавируса

Данные, которые я использовал для создания следующих визуализаций — набор данных Novel Corona Virus 2019 от Kaggle, который можно найти здесь. Набор данных получен из нескольких источников, включая Всемирную организацию здравоохранения, Национальную комиссию здравоохранения Китайской Народной Республики и Центры США по контролю за заболеваниями.

Может я был не достаточно настырным, но готовых качественных отечественных датасетов для анализа показателей по субъектам мне найти не удалось, а заниматься их сбором и предварительной обработкой для этой публикации не целесообразно. Кто знает где? — подскажите в комментариях.

Примечание. Если какой-либо из этих источников предоставил не точные и не своевременные данные, визуализации могут быть искажены или неточны.

Статический хороплет

Ниже представлена ​​статическая диаграмма общего количества подтвержденных случаев коронавируса по странам по состоянию на 28 марта 2020 года. Вы можете видеть, что страны с наибольшим количеством подтверждённых случаев заболевания это США, Китай и Италия, а также несколько других европейских стран.

Статическая фоновая картограмма
Статическая фоновая картограмма

Код для этой инфографики выглядит следующим образом:

# Импорт библиотек
import numpy as np 
import pandas as pd 
import plotly as py
import plotly.express as px
import plotly.graph_objs as go
from plotly.subplots import make_subplots
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot

# Чтение данных
df = pd.read_csv("input/covid_19_data.csv")

# Переименуем колонки
df = df.rename(columns={'Country/Region':'Страна'})
df = df.rename(columns={'ObservationDate':'Дата'})
df = df.rename(columns={'Confirmed':'Подтверждено'})

# Манипуляции с оригиналом Dataframe
df_countries = df.groupby(['Страна', 'Дата']).sum().reset_index().sort_values('Дата', ascending=False)
df_countries = df_countries.drop_duplicates(subset = ['Страна'])
df_countries = df_countries[df_countries['Подтверждено']>0]

# Создание фоновой картограммы
fig = go.Figure(data=go.Choropleth(
    locations = df_countries['Страна'],
    locationmode = 'country names',
    z = df_countries['Подтверждено'],
    colorscale = 'Reds',
    marker_line_color = 'black',
    marker_line_width = 0.5,
))
fig.update_layout(
    title_text = 'Подтверждённые заболевания 28 марта 2020',
    title_x = 0.5,
    geo=dict(
        showframe = False,
        showcoastlines = False,
        projection_type = 'equirectangular'
    )
)

fig.show()

Анимированная фоновая картограмма

Сейчас Вы увидите, насколько по сравнению со статической более эффектна и интересна анимированная фоновая картограмма. Здесь мы смотрим на общее количество подтвержденных случаев коронавируса по странам во времени. И Вы можете видеть, что до недавнего времени больше всего заболевших было в Китае.

Код для её создания выглядит следующим образом:

# Импорт библиотек
import numpy as np 
import pandas as pd 
import plotly as py
import plotly.express as px
import plotly.graph_objs as go
from plotly.subplots import make_subplots
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot

# Чтение данных
df = pd.read_csv("input/covid_19_data.csv")

# Переименуем колонки
df = df.rename(columns={'Country/Region':'Страна'})
df = df.rename(columns={'ObservationDate':'Дата'})
df = df.rename(columns={'Confirmed':'Подтверждено'})

# Манипуляции с оригиналом Dataframe
df_countrydate = df[df['Подтверждено']>0]
df_countrydate = df_countrydate.groupby(['Дата','Страна']).sum().reset_index()
df_countrydate

# Создание фоновой картограммы
fig = px.choropleth(df_countrydate, 
                    locations="Страна", 
                    locationmode = "country names",
                    color="Подтверждено", 
                    hover_name="Страна", 
                    animation_frame="Дата"
                   )
fig.update_layout(
    title_text = 'Глобальное распространение короновируса',
    title_x = 0.5,
    geo=dict(
        showframe = False,
        showcoastlines = False,
    ))
    
fig.show()

Коды не заработали? Скорее всего в вашей экосистеме Python не установлены нужные пакеты. Это дело легко поправимо. В терминале наберите команду:

pip install numpy pandas plotly

Подождите чутка и всё у вас получится!

Использованы материалы How To Visualize the Coronavirus Pandemic with Choropleth Maps

Print Friendly, PDF & Email

CC BY-NC 4.0 Как визуализировать пандемию коронавируса с помощью фоновых картограмм, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.


Респект и уважуха

Добавить комментарий