Рубрики
Без рубрики

Изучение панд путем изучения данных о COVID-19

Используйте инструмент анализа данных pandas, чтобы изучить бесплатный набор данных о COVID-19, предоставленный Европейским центром профилактики и контроля заболеваний.

Автор оригинала: Matt Makai.

В Европейский центр профилактики и контроля заболеваний обеспечивает ежедневно обновляемые данные о COVID-19 по всему миру который легко скачать в форматах JSON, CSV или XML. В этом руководстве мы будем использовать инструмент анализа данных pandas на данные, разделенные запятыми (CSV), чтобы узнать некоторые из основных pandas команды и исследуйте, что содержится в наборе данных.

Настройка нашей среды разработки

Убедитесь, что у вас установлен Python 3. На данный момент Python 3.8.2 – последняя версия.

В этом уроке мы также будем использовать панды .

Установите его сейчас в новую виртуальную среду со следующими команды:

python -m venv covidpandas
source covidpandas/bin/activate

pip install pandas

Теперь мы готовы получить данные о COVID-19 и начать их анализ с панды.

Получение данных о COVID-19

Перейти к загрузить сегодняшние данные о географическом распределении Случаи COVID-19 во всем мире страницу в вашем веб-браузере. Это должно выглядеть примерно так Скриншот.

Загрузите CSV-версию данных о COVID-19.

Должна быть ссылка на скачивание данные в формате CSV, но организация изменила макет страницы несколько раз за последние несколько недель, что затрудняет поиск форматы, отличные от Excel (XLSX). Если у вас возникли проблемы с получением Версия CSV, просто скачайте этот с GitHub который привязан к копии, загруженной 28 марта 2020 г.

Импорт CSV в pandas

У нас есть данные в CSV, теперь нам нужно импортировать их в pandas DataFrame.

Начните с запуска Python REPL:

python

>>>

REPL готов к работе, теперь нам нужно импортировать панды, чтобы мы могли читать данные, которые мы скачали.

from pandas import read_csv

df = read_csv("covid-19-cases-march-28-2020.csv")

Не волнуйтесь, если вы получите сообщение об ошибке UnicodeDecodeError: кодек 'utf-8' не может декодировать байт 0xe7 ... . Вместо этого запустите эту команду, которая явно устанавливает кодировку файла поэтому панды могут правильно читать CSV.

# make sure the file name of the csv matches your file's name!
df = read_csv("covid-19-cases-march-28-2020.csv", encoding="ISO-8859-1")

Теперь у нас есть данные, загруженные в pandas DataFrame и может запустить код, чтобы тыкать и подталкивать и что внутри набор данных.

Запуск команд pandas

Давайте сначала посмотрим, как выглядит образец данных. я обычно выполняю функции head и tail , когда я что-то открываю вверх, чтобы узнать, что содержится в первых пяти и последних пяти строках.

df.head()

Вы должны увидеть шесть строк вывода: одну в качестве заголовка столбца и первые пять строк данных из CSV:

dateRep  day  month  year  cases  deaths countriesAndTerritories geoId countryterritoryCode  popData2018
0  28/03/2020   28      3  2020     16       1             Afghanistan    AF                  AFG   37172386.0
1  27/03/2020   27      3  2020      0       0             Afghanistan    AF                  AFG   37172386.0
2  26/03/2020   26      3  2020     33       0             Afghanistan    AF                  AFG   37172386.0
3  25/03/2020   25      3  2020      2       0             Afghanistan    AF                  AFG   37172386.0
4  24/03/2020   24      3  2020      6       1             Afghanistan    AF                  AFG   37172386.0

Функция tail просматривает последние пять строк в DataFrame.

df.tail()

Вывод tail будет выглядеть примерно так:

dateRep  day  month  year  cases  deaths countriesAndTerritories geoId countryterritoryCode  popData2018
7315  25/03/2020   25      3  2020      0       0                Zimbabwe    ZW                  ZWE   14439018.0
7316  24/03/2020   24      3  2020      0       1                Zimbabwe    ZW                  ZWE   14439018.0
7317  23/03/2020   23      3  2020      0       0                Zimbabwe    ZW                  ZWE   14439018.0
7318  22/03/2020   22      3  2020      1       0                Zimbabwe    ZW                  ZWE   14439018.0
7319  21/03/2020   21      3  2020      1       0                Zimbabwe    ZW                  ZWE   14439018.0

Обратите внимание, что вы также можете передать целое число в head или tail , например df.head (10) , чтобы получить первое или последнее n количество строк.

Похоже, что на основе функции tail у нас есть около 7320 строк данные (поскольку первая строка имеет индекс 0). Мы можем подтвердить, сколько данные находятся в каждом столбце с функцией count .

df.count()

Результат count будет выглядеть так:

dateRep                    7320
day                        7320
month                      7320
year                       7320
cases                      7320
deaths                     7320
countriesAndTerritories    7320
geoId                      7306
countryterritoryCode       7254
popData2018                7311
dtype: int64

Что, если мы хотим посмотреть на один из этих столбцов и найти, например, высшая ценность кейсов?

df.cases.max()

В этом наборе данных мы получаем 18695 на выходе. Как насчет того, чтобы смотреть на стандартные статистические показатели по всем столбцам? Вот где Функция description пригодится.

df.describe()

description представляет стандартные статистические показатели, такие как min, max, медиана и среднее значение для всего в вашем наборе данных. В этом случае мы получить в качестве вывода:

day        month         year         cases       deaths   popData2018
count  7320.000000  7320.000000  7320.000000   7320.000000  7320.000000  7.311000e+03
mean     16.828142     2.249454  2019.990847     80.870355     3.687158  7.130483e+07
std       8.322981     1.256463     0.095239    608.270244    35.327689  2.140624e+08
min       1.000000     1.000000  2019.000000     -9.000000     0.000000  1.000000e+03
25%      10.000000     1.000000  2020.000000      0.000000     0.000000  4.137309e+06
50%      18.000000     2.000000  2020.000000      0.000000     0.000000  1.072767e+07
75%      24.000000     3.000000  2020.000000      5.000000     0.000000  5.139301e+07
max      31.000000    12.000000  2020.000000  18695.000000   971.000000  1.392730e+09

Как насчет быстрого просмотра того, коррелированы ли данные столбцов? друг с другом? Функция corr – это то, что нам нужно.

df.corr()

Для нашего набора данных corr выводит:

day     month      year     cases    deaths  popData2018
day          1.000000  0.203006 -0.163665  0.063629  0.060075    -0.040677
month        0.203006  1.000000 -0.745912  0.062494  0.052707    -0.039131
year        -0.163665 -0.745912  1.000000  0.012715  0.010032    -0.006294
cases        0.063629  0.062494  0.012715  1.000000  0.716968     0.136580
deaths       0.060075  0.052707  0.010032  0.716968  1.000000     0.082229
popData2018 -0.040677 -0.039131 -0.006294  0.136580  0.082229     1.000000

Неудивительно, что мы видим корреляцию 1 000 000 между столбцом и самим собой. Если бы мы не увидели такого результата, нам пришлось бы волноваться! Для других столбцов это может нет смысла смотреть на их соотношение. Вот где вам нужно подумайте о данных. Часто существует взаимосвязь между совершенно несвязанными столбцы просто потому, что данные структурированы определенным образом.

Если вы такой же разработчик, как я, без строгого опыта в статистике (Статистика 200 в колледже была давно назад), возможно, вам нужно освежить на ваших знаниях статистики, прежде чем вы сможете сказать, есть ли что-то в данные имеют значение или нет.

Продолжаем изучать данные. Мы можем выбрать столбцы и определить, как в нем хранится много уникальных предметов. Например, сколько уникальных стран а территории указаны?

df.countriesAndTerritories.nunique()

В этом случае результат должен быть 196.

Задавая вопросы о данных

Эти функции подходят для базовых запросов, чтобы узнать, что находится в набор данных, но как мы можем задать реальные вопросы, объединив некоторые команды?

Теперь мы знаем, что в этом наборе 7320 строк, поскольку мы использовали count функция выше. Каждая строка представляет один день в стране. В настоящее время задавать вопрос. Сколько дней в этих странах было 10 или больше случаев зарегистрировано?

Давайте создадим новый фрейм данных с именем df2 со строками, в которых есть только В этот день было зарегистрировано 10 или более случаев, затем подсчитайте количество строк внутри.

df2 = df[df['cases']>=10]
df2.count()

Это должно дать нам значение 1531. Было 1531 случай 10 или более случаев COVID-19, зарегистрированных за один день, в Перечислено 196 стран или террористических организаций. Но 1531 год трудно объяснить людям. Мы должны выбрать одну страну и показать, сколько раз За один день было зарегистрировано 10 и более случаев. Как насчет меньшего о такой стране, как Вьетнам, о которой не сообщают так много, как о Китае, США или Италия?

df2[df2['countriesAndTerritories']=='Vietnam']

Это даст нам полный вывод данных по столбцам:

dateRep  day  month  year  cases  deaths countriesAndTerritories geoId countryterritoryCode  popData2018
7217  28/03/2020   28      3  2020     16       0                 Vietnam    VN                  VNM   95540395.0
7219  26/03/2020   26      3  2020     14       0                 Vietnam    VN                  VNM   95540395.0
7220  25/03/2020   25      3  2020     11       0                 Vietnam    VN                  VNM   95540395.0
7222  23/03/2020   23      3  2020     24       0                 Vietnam    VN                  VNM   95540395.0
7226  19/03/2020   19      3  2020     15       0                 Vietnam    VN                  VNM   95540395.0

Мы также можем использовать здесь функцию count , чтобы подтвердить, что пять дней, в течение которых во Вьетнаме было зарегистрировано 10 или более новых случаев слишком далеко:

df2[df2['countriesAndTerritories']=='Vietnam'].count()

Получаем 5 для столбцов. К сожалению, когда вы смотрите на полные данные, кажется, все эти строки очень свежие, и вирус только начинает там шире распространяться. Будем надеяться, что они вместе с любой другой страной может переломить ситуацию, сгладить кривую и уберечь больше людей от болезней по мере того, как мы идем дальше.

Это хорошее место, чтобы остановиться, но мы покрыли много земли панд в этом уроке!

Что дальше?

Мы только что импортировали и посмотрели, что есть в Европейском центре. для набора данных по профилактике и контролю заболеваний COVID-19 с использованием панды. Это был краткий обзор некоторых основных панд команд, и я настоятельно рекомендую вам ознакомиться с список документации DataFrame чтобы узнать обо всех других полезных функциях этого инструмента предоставляет разработчикам.

Вы также можете получить представление о том, что кодировать дальше в своем проекте Python, чтение Страница полного содержания Python.

Вопросов? Свяжитесь со мной через Twitter @fullstackpython или @mattmakai . Я также на GitHub с имя пользователя mattmakai .

Что-то не так с этим сообщением? Вилка источник этой страницы на GitHub и отправьте запрос на перенос.