Appia의 IT세상

파이썬[Python] Pandas, DataFrame의 날짜를 이용한 Index(Label)만들기 본문

Python/Python Pandas

파이썬[Python] Pandas, DataFrame의 날짜를 이용한 Index(Label)만들기

Appia 2020. 4. 6. 07:50
반응형

종종 재무 관련된 부분들을 살펴볼 때 흔히들 많이 날짜부분들을 인덱스로 많이 사용하고 합니다. 실제 많은 서적이나 예시등에서도 관련된 부분들을 사용하고 있습니다. 그래서 이번에는 Pandas에서도 관련된 함수에 대해서 한번 살펴보고자 합니다. 

 

우선 Pandas에서도 다음과 같은 함수를 통해서 일련된 날짜 생성등을 활용할 수 있게 지원하고 있습니다. 

 

date_range() 

 

그럼 이를 바탕으로 간단한 예를 살펴보도록 하겠습니다. 

example) 

import pandas as pd
 
print (pd.date_range('1/1/2020', periods=5))
cs

 

result) 

DatetimeIndex(['2020-01-01''2020-01-02''2020-01-03''2020-01-04''2020-01-05'],
 
              dtype='datetime64[ns]', freq='D')
cs

 

위와 같이 5일 동안 연속된 부분들이 생성이 됩니다. freq = 'D'는 Day 기준입니다. 그럼 한번 생성시에 입력인자에 freq을 입력해보도록 하겠습니다. 

 

example) 

import pandas as pd
 
print (pd.date_range('1/1/2020', periods=5, freq = 'M'))
cs

result) 

DatetimeIndex(['2020-01-31''2020-02-29''2020-03-31''2020-04-30''2020-05-31'],
 
              dtype='datetime64[ns]', freq='M')
cs

freq를 바뀌니, 다른 형태로 표시가 됩니다. 월말 기준으로 표시가 됩니다. 

 

종종 주식 관련된 업무를 하다보면 휴일을 제외한 부분에 대해서 표시를 하고 싶을 경우가 있습니다. 이럴 경우에는 date_range()대신에 bdate_range를 이용하시면 됩니다. 이 경우에 토요일 일요일을 제외하고 날짜들을 출력해 줍니다. 

 

example)

import pandas as pd
 
print("일반 날짜 출력")
 
print (pd.date_range('1/1/2020', periods=7))
 
print("영업일 기준 날짜 출력")
 
print (pd.bdate_range('1/1/2020', periods=7))
cs

result) 

일반 날짜 출력
DatetimeIndex(['2020-01-01''2020-01-02''2020-01-03''2020-01-04',
 
               '2020-01-05''2020-01-06''2020-01-07'],
               
              dtype='datetime64[ns]', freq='D')
              
영업일 기준 날짜 출력
 
DatetimeIndex(['2020-01-01''2020-01-02''2020-01-03''2020-01-06',
 
               '2020-01-07''2020-01-08''2020-01-09'],
               
              dtype='datetime64[ns]', freq='B')
cs

기존 부분과 조금 달라짐을 확인할 수 있습니다. 특히 freq ='B'가 적용되는 것을 알 수 있습니다.

Offset 관련된 부분들을 다음 표를 참조해 주시길 바랍니다. 

B business day frequency BQS business quarter start frequency
D calendar day frequency A annual(Year) end frequency
W weekly frequency BA business year end frequency
M month end frequency BAS business year start frequency
SM semi-month end frequency BH business hour frequency
BM business month end frequency H hourly frequency
MS month start frequency T, min minutely frequency
SMS SMS semi month start frequency S secondly frequency
BMS business month start frequency L, ms milliseconds
Q quarter end frequency U, us microseconds
BQ business quarter end frequency N nanoseconds
QS quarter start frequency

 

오늘은 날짜 기반으로 인덱스를 사용할 수 있도록 DatetimeIndex를 생성하는 방법에 대해서 한번 살펴봤습니다. 살짝의 손질로 보다 좋은 데이터을 읽을 수 있는 기틀이 될 수 있다고 생각합니다. 

혹시 궁금하신점이나 문의 사항 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다. 

반응형
Comments