데이터분석과 개발

[pandas] 데이터프레임 날짜 인덱스 늘리기(reindex) 본문

AI(시계열)/데이터 전처리

[pandas] 데이터프레임 날짜 인덱스 늘리기(reindex)

긍정적인마인드 2023. 3. 16. 21:31

* 공부한 것을 정리한 글이므로 틀린 내용이 있을 수 있습니다.

* 더 좋은 방법 또는 틀린부분이 발견될 시 계속 수정하며 업데이트 할 예정입니다.

 

다른 두 개의 시계열 데이터를 비교하려 할때 날짜의 시작 끝이 달라서 어떻게 맞춰줄 지 

많이 고민했었습니다.

 

기준 시계열의 경우 월데이터 2022년 1월~ 2023년 2월 데이터였고

비교할 시계열의 경우 월데이터 2022년 1월~ 2023년 1월까지 밖에 없던 상황입니다.

 

seaborn 모듈의 'flights'데이터셋을 사용하여 보겠습니다.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset("flights")
df

 

 기준 데이터를 1950년 1월 ~ 1951년 2월, 다른 데이터를 1950년 1월~12월로 만들어 보겠습니다.

 

# 문자열 -> 숫자형
df['month'] = pd.factorize(df['month'])[0] +1

# 숫자 -> 문자열
df['year'] = df['year'].astype('str')
df['month'] = df['month'].astype('str')

# 문자열 -> datetime 형식 인덱스 생성 
df['date'] = df['year'] + '-' + df['month']
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')

df_a = df['passengers'].loc["1950-01":"1951-02"].to_frame()
df_b = df['passengers'].loc["1950-01":"1950-12"].to_frame()

다음 df_a, df_b의 결과입니다.

df_a
df_b

df_b의 날짜 인덱스를 1950년 8월까지 늘리고 싶을땐 reindex 함수를 사용하면 됩니다.

# 새로운 날짜 범위(1950년 1월~ 1950년 8월) 지정
new_date_range = df_a.index

# reindex 함수 사용하여 늘려주기
df_b.reindex(new_date_range)

7월 8월 인덱스가 잘 추가된 것을 볼 수 있습니다!

간단하지만 막상하려니 어떻게 할지 바로 떠오르지 않았네요ㅜ 전처리는 마스터하는날까지 포스팅을 해야겠습니다.

감사합니다!