Это вводное руководство о том, как проводить анализ и визуализацию данных с использованием известной библиотеки анализа данных под названием 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
. Вы можете использовать его для создания гистограмм, круговых диаграмм и т. Д.
Спасибо, что прочитали эту статью. Удачного дня!