※ 날짜 데이터
■ 문자형데이터를 날짜데이터로 변환하기
- 문자형 데이터를 날짜형 데이터로 변경을 해야 날짜 계산이 가능함
- 형식
- %Y : 4자리 연도
- %y : 0을 채운 2자리 연도
- %m : 0을 채운 월
- %d : 0을 채운 일
- %H : 0을 채운 시간
- %M : 0을 채운 분
- %S : 0을 채운 초
# 기본 구조
> pd.to_datetime(data, format, ...)
■ 날짜데이터를 원하는 형식으로 변경하기
# e.g. df['date'] : 날짜형 데이터
> df['date'].strftime('%Y.%m') # e.g. 2024.06
> df['date'].strftime('%Y-%m') # e.g. 2024-06
> df['date'].strftime('%Y-%m %H:%M:%S') # e.g. 2024-06 18:15:30
■ dt 연산자
- year : 연도
- month : 월
- day : 일
- day_of_week : (0 - 월요일, 6 - 일요일)
- day_name() : 요일을 문자열로
> df['date'].dt.year
> df['date'].dt.month
> df['date'].dt.day
> df['date'].dt.day_of_week # 요일을 숫자로 나타냄
> df['date'].dt.day_name() # 요일을 문자로 나타냄
■ 날짜 계산
- day 연산 : pd.Timedelta(day = 숫자)
- month 연산 : DateOffset(months = 숫자)
- year 연산 : DateOffset(years = 숫자)
# 일 계산
> df['plus day1'] = df['date1'] + pd.Timedelta(days =1)
> df['plus day7'] = df['date1'] + pd.Timedelta(days = 7)
> df['minus day7'] = df['date1'] - pd.Timedelta(days = 7)
# 년, 월 계산
> from pandas.tseries.offsets import DateOffset
> df['plus month1'] = df['date1'] + DateOffset(months = 1)
> df['plus year2'] = df['date1'] + DateOffset(years 2)
■ 날짜 구간 데이터 만들기
- 주기 (freq)
- D : 일별
- W : 주별
- M : 월별 말일
- MS : 월별 시작일
- A : 연도별 말일
- AS : 연도별 시작일
# 기본 구조
> pd.date_range(start = 시작일자, end = 종료일자, periods = 기간수, freq = 주기)
> pd.date_range(start = '2020-01-01', periods = 365, freq = 'D')
> pd.date_range(start = '2020-01-01', end = '2023-06-30', freq = 'MS') # 월초를 기준으로
> pd.date_range(start = '2020-01-01', end = '2023-06-30', freq = 'M') # 월말을 기준으로
> pd.date_range(start = '2020-01-01', end = '2023-06-30', freq = 'AS') # 연초를 기준으로
> pd.date_range(start = '2020-01-01', end = '2023-06-30', freq = 'A') # 연말를 기준으로
■ 기간 이동 계산
- rolling : 이동평균선 e.g. 이동하면서 직전 며칠의 평균을 구한다
- shift : 행 이동
- 평균, 합계, 최솟값, 최댓값 등 연산 가능
# 사용 예시
> df['Temp'].rolling(7).sum()
> df['Temp'].rolling(30).mean()
> df['Temp shift1'] = df['Temp'].shift(1) # 한 행씩 움직임
■ 증감율 구하기
# 사용 예시
> df['Temp shift1'] = df['Temp'].shift(1)
> df['pct change'] = (df['Temp Shift1'] - df['Temp']) / df['Temp']
> df['Temp shift-1'] = df['Temp'].shift(-1) # 음수도 가능함 / 위로 올림
댓글남기기