Искусство раскрывать идеи и тенденции в данных существует с древних времен. Древние египтяне точно предсказали разлив Нила. Другой пример из современности: изобретение компьютеров значительно расширило возможности анализа данных. Переписи 1880 года в США потребовалось более 7 лет, чтобы получить окончательный отчет. После изобретения счетной машины следующая перепись была завершена всего через 18 месяцев. Сегодня агрегация данных выросла так быстро, и то, как мы думаем о данных, также изменилось и будет меняться более радикально. Будучи профессионалом, работающим в технологическом пространстве, я люблю рассматривать эту возможность. Эта и следующая серия постов будут документацией извлеченных уроков и попыткой вывести набор навыков на новый уровень.

Временной ряд — это ряд точек данных, упорядоченных во времени, которые могут выявить закономерности. Например, анализ прошлых данных временных рядов COVID-19 очень полезен для прогнозирования будущего. Прогноз использует комбинацию статистических методов и методов машинного обучения. Эта серия предназначена для извлечения подтвержденных случаев COVID-19 в Австралии из репозитория GitHub Университета Джона Хопкинса и начала анализа. В будущих сериях будут рассмотрены варианты наложения результатов на карту и, наконец, автоматизация всех этих процессов для повторяющегося использования. При внимательном рассмотрении наборов данных видно, что сопоставление данных осуществляется только по оси.

Подготовка:

Инструменты, необходимые для этого упражнения, — это JupyterLab, интерактивная веб-среда разработки для аналогичных задач. JupyterLab можно установить с помощью conda или pip. Этот документ фиксирует установку через pip. Начните установку с JupyterLab, а затем с Jupyter Notebooks, что полезно для написания и итерации программного кода для анализа данных. Программирование для этого анализа использует Python. Еще один инструмент для установки — Pandas, мощный инструмент для анализа данных и управления, созданный на основе Python. После успешной установки запустите ноутбук.

$ pip3 install jupyterlab
$ pip3 install notebook
$ pip3 install pandas
$ jupyter notebook

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

Инкубация:

Обычной практикой является импорт Pandas под псевдонимом pd. Будет использовать функцию Pandas для чтения файла в DataFrame, поскольку файл в репозитории GitHub представляет собой файл csv (значения, разделенные запятыми). Расположение файла является обязательным параметром для этой функции Pandas. Эта функция поддерживает опционально итерацию или разбиение файла на куски и многое другое. Обратитесь к документации для более подробной информации.

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

import pandas as pd
confirmed_url = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv'
pd.read_csv(confirmed_url)

Освещение:

Импорт файла csv в качестве DataFrame предназначен для разделения данных между осью X и осью Y для создания временного ряда. Значения в полях «Страна», «Провинция», «Широта» и «Долгота» должны быть на оси, а значение подтвержденных случаев за каждый день — на другой оси. Изменение формы DataFrame с широкого на длинный формат упрощается с помощью функции плавления в Pandas. Функция Melt возвращает DataFrame в формате, в котором один или несколько столбцов являются переменными-идентификаторами, определенными через переменную id_vars. В нашем примере поле «Страна», «Провинция», «Широта» и «Долгота» являются переменными-идентификаторами. Столбцы, не являющиеся частью переменных-идентификаторов, являются измеряемыми переменными и значениями. В нашем примере значение подтвержденного случая за каждый день. Можно переименовать имя переменной по умолчанию, используя необязательный параметр var_name в функции плавления. Точно так же для значений существует необязательный параметр value_name.

confirmed_cases = pd.read_csv(confirmed_url)
confirmed_cases.melt(id_vars=['Province/State', 'Country/Region', 'Lat', 'Long'], var_name = 'Date', value_name = 'Confirmed')

Проверка:

Последний шаг — объединение всего этого в функцию Python для повторного использования. Поскольку мы сосредоточены только на COVID-19, подтвержденные случаи среди жителей Австралии должны включать фильтр для удаления данных других национальностей перед таянием. По завершении ввода функции нажмите кнопку «Выполнить» в блокноте Jupyter, чтобы убедиться в правильности синтаксиса. На этом этапе результаты не будут отображаться из-за возврата DataFrame. Проверьте функцию, вызвав функцию и сохранив DataFrame в переменной. Проанализируйте DataFrame, используя функцию выборки в Pandas, которая возвращает случайную выборку элементов из оси объекта и многое другое.

def reshaped_data(file_name, status):
    loaded_data = pd.read_csv(file_name)
    auzzie_data = loaded_data[loaded_data['Country/Region'] ==
    'Australia']
    return auzzie_data.melt(id_vars=['Province/State',  
           'Country/Region', 'Lat', 'Long'], var_name = 'Date', 
           value_name = 'Confirmed')
confirmed_data = reshaped_data(confirmed_url, "Confirmed")
confirmed_data.sample()