* 공부한 것을 정리한 글이므로 틀린 내용이 있을 수 있습니다.
* 더 좋은 방법 또는 틀린부분이 발견될 시 계속 수정하며 업데이트 할 예정입니다.
다른 두 개의 시계열 데이터를 비교하려 할때 날짜의 시작 끝이 달라서 어떻게 맞춰줄 지
많이 고민했었습니다.
기준 시계열의 경우 월데이터 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_b의 날짜 인덱스를 1950년 8월까지 늘리고 싶을땐 reindex 함수를 사용하면 됩니다.
# 새로운 날짜 범위(1950년 1월~ 1950년 8월) 지정
new_date_range = df_a.index
# reindex 함수 사용하여 늘려주기
df_b.reindex(new_date_range)
7월 8월 인덱스가 잘 추가된 것을 볼 수 있습니다!
간단하지만 막상하려니 어떻게 할지 바로 떠오르지 않았네요ㅜ 전처리는 마스터하는날까지 포스팅을 해야겠습니다.
감사합니다!
'데이터분석 > 데이터 전처리' 카테고리의 다른 글
[pandas] 한달 전 월말 날짜 구하기 (0) | 2023.03.17 |
---|---|
[pandas] if 문으로 빈 데이터프레임 거르기 (0) | 2023.03.16 |
[Pandas] 데이터 음수값 없애기 (0) | 2023.03.14 |
[Pandas] 년,월,일 따로 있는 데이터 읽기 : parse_dates, date_parser, index_col (0) | 2023.01.08 |