Коронавирусное заболевание (COVID-19) вызывается тяжелым острым респираторным синдромом Коронавирусом 2 (SARS-CoV-2) и имеет всемирный эффект. Многие сообщения в блогах анализируют пандемию коронавируса. Некоторые из них информативны, другие содержат вводящие в заблуждение утверждения. Цель этого сообщения в блоге - показать, как анализировать данные о коронавирусе с помощью pandas. Я также отвечаю на вопрос, который задавал некоторое время: «Сколько людей в настоящее время болеют коронавирусом в той или иной стране».

Чтобы запустить примеры, скачайте Блокнот Jupyter.

Вот несколько ссылок, которые могут вас заинтересовать:

- Labeling and Data Engineering for Conversational AI and Analytics
- Data Science for Business Leaders [Course]
- Intro to Machine Learning with PyTorch [Course]
- Become a Growth Product Manager [Course]
- Deep Learning (Adaptive Computation and ML series) [Ebook]
- Free skill tests for Data Scientists & Machine Learning Engineers

Некоторые из приведенных выше ссылок являются партнерскими ссылками, и если вы перейдете по ним, чтобы совершить покупку, я буду получать комиссию. Имейте в виду, что я связываю курсы из-за их качества, а не из-за комиссии, которую я получаю от ваших покупок.

Чтобы улучшить свою игру Pandas, см.



Набор данных

Временной ряд по коронавирусной болезни 2019 (COVID-19) содержит список подтвержденных случаев, зарегистрированных случаев смерти и случаев выздоровления. Данные в формате CSV и обновляются ежедневно. Этот набор данных включает данные временных рядов, отслеживающие количество людей, пострадавших от COVID-19 во всем мире, в том числе:

  • подтвержденные проверенные случаи заражения коронавирусом,
  • количество людей, которые, как сообщается, умерли от коронавируса,
  • количество людей, которые, как сообщается, выздоровели от него.

Получить данные о коронавирусе в pandas DataFrame так же просто, как прочитать их из файла. Давайте определим URL файла CSV и загрузим данные в DataFrame.

source_url = "https://raw.githubusercontent.com/datasets/covid-19/master/data/countries-aggregated.csv"
df = pd.read_csv(source_url)
df.shape

Преобразуем строку даты в тип DateTime и сортируем записи по дате.

df.Date = pd.to_datetime(df.Date)
df = df.sort_values('Date').reset_index(drop=True)
df.head()

С 22 января по 28 марта 2020 года будет подано 67 заявок от каждой страны.

df.Country.value_counts()

Сколько людей сейчас болеют коронавирусом в той или иной стране

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

Давайте подсчитаем эту статистику и внимательно посмотрим на США, Италию, Южную Корею и Китай.

countries = ['US', 'Italy', 'Korea, South', 'China']

Давайте посчитаем и посчитаем, сколько людей сейчас болеют в определенной стране.

df.loc[:, 'n_hospitalized'] = df.Confirmed - df.Recovered - df.Deaths
df.head()

На графике ниже мы можем наблюдать ошеломляющий рост пациентов с коронавирусом в США и Италии. Как мы слышим из СМИ, Южная Корея и Китай добились большего успеха в борьбе с коронавирусом. Мы также можем подтвердить это цифрами. Им удалось сгладить кривую.

fig, ax = plt.subplots(1, 4, figsize=(28, 7))
for i in range(4):
    country = countries[i]
    ax[i].set_title('Corona virus patients in %s' % country)
    df[df.Country == country][['Date', 'n_hospitalized']].plot(ax=ax[i], x='Date')

В наборе данных есть кумулятивный номер для каждого округа. Давайте посчитаем количество подтвержденных, выздоровевших и умерших в день для каждой страны.

df.loc[:, 'n_confirmed_per_day'] = df.sort_values('Date').groupby('Country')['Confirmed'].diff().fillna(0).astype(int)
df.loc[:, 'n_recovered_per_day'] = df.sort_values('Date').groupby('Country')['Recovered'].diff().fillna(0).astype(int)
df.loc[:, 'n_deaths_per_day'] = df.sort_values('Date').groupby('Country')['Deaths'].diff().fillna(0).astype(int)

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

df.loc[:, 'n_hospitalized_per_day'] = df.n_confirmed_per_day -  df.n_recovered_per_day - df.n_deaths_per_day
df[df.Country == "US"].head()

fig, ax = plt.subplots(1, 4, figsize=(28, 7))
countries = ['US', 'Italy', 'Korea, South', 'China']
for i in range(4):
    country = countries[i]
    ax[i].set_title('Corona virus patients in %s' % country)
    df[df.Country == country][['Date', 'n_hospitalized_per_day']].plot(ax=ax[i], x='Date')

Мы можем наблюдать, что рост числа случаев заражения коронавирусом в США ошеломляет. Пандемия еще не достигла своего пика в США. Ситуация в Италии также имеет восходящий тренд с несколькими отрицательными пиками. В Южной Корее и Китае больше людей переносят коронавирус, чем заболевают.

Заключение

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

Прежде чем ты уйдешь

Следуйте за мной в Twitter, где я регулярно пишу твиты о Data Science и машинном обучении.