Это вводное руководство о том, как проводить анализ и визуализацию данных с использованием известной библиотеки анализа данных под названием Pandas. Вот краткое изложение того, что будет рассмотрено в этом руководстве:

  • установка пакетов Python (запросы, панды, jupyter)
  • сбор данных о погоде (с помощью API погоды Tomorrow.io)
  • анализ данных (среднее, минимальное, максимальное, стандартное и т. д.)
  • визуализация данных (гистограмма, круговая диаграмма)

Переходим к следующему разделу и приступаем к установке необходимых пакетов.

Настраивать

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

Запросы (необязательно)

Мы используем requests для вызова конечной точки погоды для сбора данных. Выполните следующую команду, чтобы установить его:

pip install requests

Панды

Pandas - одна из самых полезных и основных библиотек для проектов в области науки о данных. Установите его следующим образом:

pip install pandas

Юпитер

Этот пакет предоставляет интерактивную веб-среду разработки для проектов в области науки о данных и машинного обучения. В этом руководстве рассматривается одна из его функций, называемая Jupyter Notebook, которая позволяет создавать интерактивный живой код.

pip install jupyter

Сбор данных

Набор данных, используемый в этом руководстве, взят из Tomorrow.io Weather API v4, одного из самых надежных бесплатных погодных API. Последняя версия поставляется с универсальной конечной точкой, вы можете легко получить все необходимые данные, сделав один вызов конечной точки.

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

  • Polygon/polyline locations - Местоположение на основе ограничивающей рамки, а не только широты и долготы.
  • Monitoring and alert via webhooks - Настройте свои собственные правила для получения предупреждений при выполнении определенных условий.
  • Dynamic routes - Отображение полей данных для маршрута путешествия.
  • Dashboard - Информация и интерактивная карта погоды.

Образец набора данных

Вы можете найти образец набора данных, который используется в этом проекте, в следующем разделе Github:

Он содержит данные о погоде за 15 дней для Вашингтона и Лас-Вегаса.

Погода API

Если вам нужны дополнительные данные, зарегистрируйте новую учетную запись Tomorrow.io. Бесплатный тариф позволяет:

  • 500 звонков / в день
  • 25 звонков / в час
  • 3 звонка / в секунду

Когда вы закончите, щелкните меню Development, и вы должны увидеть следующий пользовательский интерфейс.

Обратите внимание на Secret Key, поскольку он понадобится вам позже при вызове API погоды. API принимает следующие входные параметры:

  • location - идентификатор заранее заданного местоположения или строка долготы и широты.
  • fields - список полей, представляющих уровень данных.
  • units - Система единиц. Принимает либо metric, либо imperial.
  • timestep - Временные интервалы временных шкал. Значение по умолчанию 1h. Принимает best, 1m, 5m, 15m, 30m, 1h, 1d или current.
  • startTime - Время начала в формате ISO 8601. например 2019–03–20T14:09:50Z.
  • endTime —Конечное время в формате ISO 8601. например 2019–03–20T14:09:50Z.
  • timezone - часовой пояс даты и времени. По умолчанию UTC.

Создайте новый файл Python и добавьте в него следующий код.

Он вызовет API погоды Tomorrow.io и сохранит данные в текстовом файле. Ознакомьтесь с официальной документацией, чтобы узнать больше о доступных данных.

Анализ данных

Запустить Jupyter Notebook так же просто, как вызвать следующую команду в командной строке:

jupyter notebook

Он откроет новую вкладку в вашем браузере по умолчанию, используя следующий URL-адрес

http://localhost:8888

Щелкните File > New Notebook > Python3, чтобы создать новую записную книжку.

Импортировать

Добавьте следующий оператор импорта в первую ячейку и нажмите Shift-Enter, чтобы выполнить код и перейти к следующей ячейке.

import pandas as pd
import json

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

Загрузить набор данных

В следующей ячейке добавьте следующий код и выполните его, чтобы загрузить набор данных:

with open('washington.txt', 'r', encoding='utf8') as f:
    washington = json.load(f)
with open('lasvegas.txt', 'r', encoding='utf8') as f:
    lasvegas = json.load(f)

Распечатать

К вашему сведению, Jupyter Notebook автоматически распечатает результат последней оценки в ячейке на консоль. Например,

В этом случае нет необходимости заключать переменную в функцию print(). Если вы предпочитаете распечатать все переменные, просто распечатайте их явно или выполните следующий код в начале записной книжки:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

Создать новый фрейм данных

Затем запустите следующий код, чтобы создать новый объект DataFrame:

intervals = washington['data']['timelines'][0]['intervals']
washington_df = pd.DataFrame([x['values'] for x in intervals])
washington_df

В консоли вы должны увидеть следующий вывод:

Аналогичным образом повторите тот же шаг для данных Лас-Вегаса.

intervals = lasvegas['data']['timelines'][0]['intervals']
lasvegas_df = pd.DataFrame([x['values'] for x in intervals])
lasvegas_df

На вашей консоли отобразится следующий результат.

Изменить DataFrame

Как видите, weatherCode основан на 4-значном целом числе, что не является интуитивно понятным. Давайте перезапишем столбец и сопоставим код с соответствующим значением.

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

Получить статистические данные

Чтобы получить максимальное значение для каждого столбца, вы можете запустить следующий код:

washington_df.max()

Результат выглядит следующим образом:

temperature                  28.28
humidity                     95.03
windSpeed                     8.06
windDirection               311.89
windGust                      18.4
precipitationType                2
solarGHI                    951.39
visibility                   24.13
weatherCode          Partly Cloudy
dtype: object

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

washington_df['temperature'].min()
# 7.37

Вместо этого вы можете предпочесть describe(), поскольку он предоставляет всю необходимую информацию:

washington_df.describe()

Результат такой:

Фильтр DataFrame на основе определенных условий

Допустим, вы хотели получить данные только для мест, где температура ниже 15. Это можно сделать с помощью следующего кода:

washington_df[washington_df['temperature'] <= 15]

Кроме того, вы также можете использовать его для сравнения строк. Например, чтобы получить данные для всех мест, которые были признаны Cloudy, используйте следующий код:

washington_df[washington_df['weatherCode'] == 'Cloudy']

Считать

Допустим, вам была поставлена ​​задача определить количество дней, которые были Cloudy, лучший способ сделать это - использовать следующий код:

lasvegas_df['weatherCode'].value_counts()

Вывод будет организован по частоте:

Cloudy           7
Drizzle          4
Mostly Clear     3
Partly Cloudy    1
Clear            1
Name: weatherCode, dtype: int64

Визуализация данных

Традиционно специалисты по обработке данных используют пакет matplotlib для визуализации данных. Например, чтобы создать простую гистограмму для визуализации температуры каждого дня, выполните следующие действия:

import matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(indexes, washington_df['temperature'], color ='maroon', width = 0.4)
plt.xlabel("Day")
plt.ylabel("Temperature")
plt.show()

В настоящее время вы можете строить их напрямую, используя объект DataFrame. Такой же график можно получить с помощью следующего кода:

washington_df['temperature'].plot.bar(xlabel='Day', ylabel='Temperature', color ='maroon', width = 0.4)

Это намного удобнее, чем традиционный метод.

Фактически, вы можете объединить данные как по Лас-Вегасу, так и по Вашингтону, чтобы лучше визуализировать различия между обоими городами.

barplot = pd.DataFrame({'Washington': washington_df['temperature'], 'LasVegas': lasvegas_df['temperature']}, index=indexes)
barplot.plot.bar(width = 0.4)

Давайте изобразим Pie Chart, чтобы указать количество дней, которые считаются Cloudy, Drizzle и т. Д.

weather = dict(washington_df['weatherCode'].value_counts())
series = pd.Series(weather.values(), index=weather.keys(), name="Weather")
series.plot.pie(figsize=(6, 6))

На вашей консоли должен появиться следующий вывод:

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

Заключение

Подведем итоги тому, что вы узнали сегодня.

Это руководство началось с установки пакетов Python, таких как Pandas и Jupyter.

Затем было рассказано, как получить дополнительные данные о погоде из Tomorrow Weather API.

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

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

Спасибо, что прочитали эту статью. Удачного дня!

использованная литература

  1. Завтра - Войти
  2. Завтра - Документация
  3. Панды - Визуализация