В наши дни данные огромного размера и глубины повсюду. Наука о данных - это развивающаяся область, которая пронизывает все аспекты нашей жизни. Кроме того, одной из основных сильных сторон в борьбе с Covid-19 является исследование, обработка и анализ данных. В этой статье мы будем иметь дело с данными из ECDC (https://www.ecdc.europa.eu/en/publications-data/data-daily-new-cases-covid-19-eueea-country), и мы объяснит основные операции с данными в Python с помощью пакета Pandas.

Чтобы импортировать пакеты Pandas и Matplotlib, мы кодируем

import pandas as pd
import matplotlib.pyplot as plt

Мы загружаем файл Excel локально с указанного выше сайта и открываем его с помощью функции read_excel библиотеки Pandas. В нашем случае мы назвали файл Covid_data.xls.

df=pd.read_excel("Covid_data.xlsx", engine="openpyxl")

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

df.info()

Мы наблюдаем за столбцами фрейма данных - в нашем случае мы будем использовать столбцы: dateRep, случаев и смертей. Кроме того, название страны хранится в столбце CountryAndTerritories. Затем мы выбираем «Австрию» в качестве исследуемой страны. Создается новый столбец с именем DateTime типа datetime, в котором мы сохраняем день. Далее мы создаем новый фрейм данных с именем df_austria_sorted, который совпадает с фреймом данных df_austria, но сортируется в соответствии со столбцом DateTime

df_austria=df[df.countriesAndTerritories=='Austria']
df_austria['DateTime']=pd.to_datetime(df_austria['dateRep'],format="%d/%m/%Y")
#We sort according to DateTime
df_austria_sorted=df_austria.sort_values(by='DateTime')

Нас интересуют данные после июня (т. Е. Июля, августа и т. Д.), Поэтому мы выбираем фильтрацию с использованием столбца месяц и создаем новый фрейм данных df_austria_selected.

df_austria_selected=df_austria_sorted[df_austria_sorted.month>6]

Поскольку данные в столбцах случаев и смертей могут сильно различаться, для понимания тенденции полезно использовать скользящее среднее. Мы выбираем скользящее среднее за 7 дней и создаем два новых столбца (Скользящее среднее количество случаев и Скользящее среднее количество смертей), где мы сохраняем средние значения случаев и смертельный исход.

#Calculate moving average
df_austria_selected['Moving Average Cases']=df_austria_selected.cases.rolling(7,min_periods=1).mean()
df_austria_selected['Moving Average Deaths']=df_austria_selected.deaths.rolling(7,min_periods=1).mean()

Теперь мы построим график случаев и смертей в зависимости от времени. Мы выбираем красный цвет для случаев и синий для смертей. Полезно отобразить случаи и смертей на одном рисунке с общей осью абсцисс, чтобы понять возможную связь и взаимосвязь. Итак, мы используем функцию subplots и сначала создаем фигуру fig и ось ax1 (это будет ось для случаев, и это будет левая ось). Затем мы создаем ax2 с помощью функции twinx. Значения смертей будут нашей правой осью. Пунктирная линия используется для средних значений.

#Figure
fig, ax1=plt.subplots()
color1='tab:red'
ax1.plot(df_austria_selected['DateTime'], df_austria_selected['cases'], color=color1)
ax1.plot(df_austria_selected['DateTime'], df_austria_selected['Moving Average Cases'], color=color1,linestyle='dashed')
ax1.set_xlabel('Time')
ax1.set_ylabel('Cases',color=color1)
ax1.tick_params(axis='y',labelcolor=color1)
locs, labels=plt.xticks()
plt.setp(labels,rotation=90)
ax2=ax1.twinx() #instantiate a second axes that shares the same x-axis
color2='tab:blue'
ax2.plot(df_austria_selected['DateTime'], df_austria_selected['deaths'], color=color2)
ax2.plot(df_austria_selected['DateTime'], df_austria_selected['Moving Average Deaths'], color=color2,linestyle='dashed')
ax2.set_ylabel('Deaths',color=color2)
ax2.tick_params(axis='y',labelcolor=color2)
fig.tight_layout() #otherwise the right y-label is slightly clipped
plt.show()

Созданная нами фигура представлена ​​ниже.

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

Больше контента на plainenglish.io