이번 시간에는 비행기 승객 데이터를 이용해서 시계열 데이터를 다루는 실습을 진행한다.

시계열 데이터 - 행을 거치면서 업데이트

‘AirPassengers.csv’ 파일은 다음과 같이 생겼다.

df_time_series = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/AirPassengers.csv")
df_time_series.head()



행을 거치면서 최댓값 혹은 최솟값을 업데이트 하고 싶을 수 있다. 그 때는 다음과 같이 한다.

df_time_series["step"] = range(len(df_time_series))
df_time_series["cum_pass"] = df_time_series["#Passengers"].cumsum()
df_time_series["cum_max"] = df_time_series["#Passengers"].cummax()
df_time_series['cum_min'] = df_time_series['#Passengers'].cummin()
df_time_series.head()



스텝에 따라 승객 수의 합, 최댓값, 최솟값이 업데이트되는 것을 확인할 수 있다.


시계열 데이터 - 문자 데이터를 날짜 데이터로

‘AirPassengers.csv’는 날짜 데이터가 문자로 들어가 있다. 당연히 이를 날짜 형식으로 변환해야 다루기 쉬울 것이다.

여기서는 다음과 같은 순서로 이를 해결할 것이다.

  1. ”-“를 기준으로 Month열의 문자를 분리해서 리스트로 변환.
  2. 인덱스 0은 연도, 인덱스 1은 월로 할당.
  3. 새로운 column을 생성

가장 먼저 1번을 처리한다. 람다 함수를 사용하면 간편하다.

temp_date = df_time_series["Month"].map(lambda x:x.split("-"))
np_date = np.array(temp_date.values.tolist())

다음으로 2번을 진행한다.

year = np_date[:,0]
month = np_date[:,1]

새로운 column을 생성한 결과는 다음과 같다.

df_time_series["year"] = year
df_time_series["month"] = month
df_time_series.head()



시계열 데이터 - 이전 행과의 차이 구하기

이전 행의 값과 차이를 구할 때는 diff()를 사용한다. 예를 들어, 이전 행과의 승객 수 차이를 구할 때는 다음과 같이 한다.

df_time_series['diff'] = df_time_series['#Passengers'].diff().fillna(0)
df_time_series.head()



백분율로 증감을 알고 싶을 때는 pct_change()를 사용한다.

df_time_series["passen_dailty_pct"] = df_time_series["#Passengers"].pct_change().map(lambda x:x*100).map(lambda x:round(x,2))

df_time_series.head()



연도 별로 묶어서 합을 구하자.

df_time_series.groupby("year").sum()





별도의 출처 표시가 있는 이미지를 제외한 모든 이미지는 강의자료에서 발췌하였음을 밝힙니다.

댓글남기기