Введение
В этом практическом занятии мы проведем вас по обработке временных рядов с использованием пакета Python Pandas. В рамках этого урока мы будем работать с данными о качестве воздуха. Вы научитесь преобразовывать строки в объекты datetime, выполнять операции с этими объектами datetime, ресэмплировать временной ряд на другую частоту и многое другое.
Советы по работе с ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и приступить к практике с использованием Jupyter Notebook.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки и загружаем данные
Сначала нам нужно импортировать необходимые библиотеки Python и загрузить данные о качестве воздуха. Данные будут прочитаны в DataFrame библиотеки pandas, который представляет собой двухмерную структуру данных с метками.
## import necessary libraries
import pandas as pd
import matplotlib.pyplot as plt
## load the air quality data
air_quality = pd.read_csv("data/air_quality_no2_long.csv")
## rename the "date.utc" column to "datetime"
air_quality = air_quality.rename(columns={"date.utc": "datetime"})
Преобразуем строки в объекты datetime
Даты в столбце "datetime" в настоящее время представлены в виде строк. Мы хотим преобразовать их в объекты datetime для более удобной обработки.
## convert "datetime" column to datetime objects
air_quality["datetime"] = pd.to_datetime(air_quality["datetime"])
Добавляем новый столбец с месяцем измерения
Теперь мы хотим добавить новый столбец в наш DataFrame, содержащий только месяц каждого измерения. Это можно сделать с использованием доступатора dt.
## add a new column for the month of each measurement
air_quality["month"] = air_quality["datetime"].dt.month
Вычисляем среднюю концентрацию NO2 для каждого дня недели
Теперь мы можем вычислить среднюю концентрацию NO2 для каждого дня недели в каждом месте измерения. Это можно сделать с использованием метода groupby.
## calculate the average NO2 concentration for each day of the week
average_NO2 = air_quality.groupby([air_quality["datetime"].dt.weekday, "location"])["value"].mean()
Построим график средних значений NO2 для каждого часа дня
Мы также можем построить график средних значений NO2 для каждого часа дня. Это можно сделать с использованием метода plot.
## plot the average NO2 values for each hour of the day
fig, axs = plt.subplots(figsize=(12, 4))
air_quality.groupby(air_quality["datetime"].dt.hour)["value"].mean().plot(kind='bar', rot=0, ax=axs)
plt.xlabel("Hour of the day")
plt.ylabel("$NO_2 (µg/m^3)$")
Переиндексируем временные ряды данных
Метод resample - это мощный способ изменения частоты временных рядов данных. Здесь мы агрегируем текущие данные по часам в месячные максимумы для каждого пункта измерения.
## By pivoting the data, the datetime information became the index of the table.
no_2 = air_quality.pivot(index="datetime", columns="location", values="value")
no_2.head()
## Create a plot of the values in the different stations from the 20th of May till the end of 21st of May
no_2["2019-05-20":"2019-05-21"].plot()
## resample time series data
monthly_max = no_2.resample("M").max()
monthly_max
Резюме
В этом практическом занятии мы научились обрабатывать временные ряды данных в Python с использованием библиотеки pandas. Мы загрузили данные о качестве воздуха, преобразовали строки дат в объекты datetime, вычислили среднюю концентрацию NO2 для каждого дня недели, построили график средних значений NO2 для каждого часа дня и переиндексировали временные ряды данных с использованием другой частоты.