소개
이 랩에서는 Python 패키지인 Pandas 를 사용하여 시계열 데이터를 처리하는 방법을 안내합니다. 이 튜토리얼에서는 대기 질 데이터를 사용합니다. 문자열을 datetime 객체로 변환하고, 이러한 datetime 객체에 대한 연산을 수행하며, 시계열을 다른 빈도로 리샘플링하는 방법 등을 배우게 됩니다.
VM 팁
VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.
필요한 라이브러리 가져오기 및 데이터 로드
먼저, 필요한 Python 라이브러리를 가져오고 대기 질 데이터를 로드해야 합니다. 데이터는 2 차원 레이블이 지정된 데이터 구조인 pandas DataFrame 으로 읽혀집니다.
## 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)
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
요약
이 랩에서는 pandas 라이브러리를 사용하여 Python 에서 시계열 데이터를 처리하는 방법을 배웠습니다. 대기 질 데이터를 로드하고, 날짜 문자열을 datetime 객체로 변환하고, 요일별 평균 NO2 농도를 계산하고, 하루의 각 시간대별 평균 NO2 값을 플롯하고, 시계열 데이터를 다른 빈도로 리샘플링했습니다.