В наши дни данные огромного размера и глубины повсюду. Наука о данных - это развивающаяся область, которая пронизывает все аспекты нашей жизни. Кроме того, одной из основных сильных сторон в борьбе с 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