В ходе моей работы была выполнена визуализация распространения коронавирусной инфекции. Что же такое визуализация ? Визуализация - это процесс графического отображения сложных процессов (в данном случае построения) на экране компьютера в виде графических примитивов (графических фигур).
Визуализация данных это наиболее эффективный метод иллюстрации и объяснения сложной информации, особенно числовых данных, в простой и удобоваримой форме. Кроме того, при грамотном исполнении, инфографика при интерпретации данных позволяет уменьшить или смягчить систематические ошибки. Один из заслуживающих особого внимания видов визуализации — анимированные фоновые картограммы или хороплеты. И в данной статье мы, используя эти виды, визуализируем пандемию коронавируса, что на данный момент очень актуально.
Но прежде чем начать, давайте разберем определения. Фоновая картограмма или хороплет — это тип тематической карты, на которой области или регионы заштрихованы пропорционально и в соответствии со значением заданного измерения данных.
Статические хороплеты наиболее полезны, когда надо сравнить какие то показатели по регионам. Например, сравнить уровень преступности в данный момент в каждом субъекте Российской Федерации, что можно визуализировать с помощью статической фоновой картограммы.
Анимированная или динамическая фоновая картограмма похожа на статическую, за исключением того, что добавляется время. Это третье измерение делает визуализацию исключительно интересной и мощной.
Код:
#Статический хороплет # Импорт библиотек 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("data/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.write_html('Static_choroplete.html', auto_open=True)
Здесь, мы импортируем установленные ранее библиотеки, после читаем csv файл из которого будем брать данные, указывая при этом его местонахождение и название. Далее, переименовываем колонки для удобного восприятия и проводим некоторые манипуляции с оригиналом Dataframe: группировки и возвращения ряда с удаленными повторяющимися значениями. После создаем фоновую картограмму и последней командой мы указываем на создание и запуск html файла, содержащий наши данные. Результат представлен ниже:
Сейчас Вы увидите, насколько по сравнению со статической более эффектна и интересна анимированная фоновая картограмма. Здесь мы смотрим на общее количество подтвержденных случаев коронавируса по странам во времени. И Вы можете видеть, что до недавнего времени больше всего заболевших было в Китае.
Ниже вы можете увидеть код:
#Анимированная фоновая картограмма # Импорт библиотек 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("data/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.write_html('Animated_background_cartogram.html', auto_open=True)