Вступление
Я активный сторонник визуализации данных, потому как считаю, что это наиболее эффективный метод иллюстрации и объяснения сложной информации, особенно числовых данных, в простой и удобоваримой форме. Кроме того, при грамотном исполнении, инфографика при интерпретации данных позволяет уменьшить или смягчить систематические ошибки. Один из заслуживающих особого внимания видов визуализации — анимированные фоновые картограммы или хороплеты. Сейчас идет пандемия, накопились огромные датасеты, и я подумал, что самое время продемонстрировать на них всю силу анимированных картограмм.
Здесь вы узнаете:
- Что такое хороплеты.
- Когда и почему их наиболее эффективно использовать.
- Код 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Подождите чутка и всё у вас получится!
Использованы материалы
Как визуализировать пандемию коронавируса с помощью фоновых картограмм, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.
Респект и уважуха