Pandas에서 CustomBusinessDay.name 속성을 활용하면 지정된 CustomBusinessDay 오프셋 객체에 적용된 빈도(frequency)의 이름을 간단히 확인할 수 있습니다. 이 글에서는 예제 코드와 실행 결과를 바탕으로 그 사용법을 자세히 살펴보겠습니다.
CustomBusinessDay란 무엇인가?
CustomBusinessDay는 Pandas의 DateOffset 하위 클래스로, 공휴일을 제외한 사용자 지정 영업일(custom business days)을 나타냅니다. weekmask 매개변수를 통해 어떤 요일을 영업일로 간주할지 직접 정의할 수 있어, 주말이나 휴무일이 일반적이지 않은 특수한 업무 일정을 다룰 때 특히 유용합니다.
필요한 라이브러리 임포트
먼저 Pandas 라이브러리를 임포트합니다.
import pandas as pd
타임스탬프 객체 생성
다음으로 기준이 될 타임스탬프 객체를 생성합니다.
timestamp = pd.Timestamp('2021-12-31 08:35:10')
print("Timestamp...\n", timestamp)
CustomBusinessDay 오프셋 생성
이제 CustomBusinessDay 오프셋을 생성합니다. 아래 예제에서는 n=2로 두 영업일 단위의 이동을 지정했고, weekmask='Mon Tue Wed Fri'로 월·화·수·금을 영업일로 설정했습니다.
cbdOffset = pd.tseries.offsets.CustomBusinessDay(n=2, weekmask='Mon Tue Wed Fri')
print("\nCustomBusinessDay Offset...\n", cbdOffset)
타임스탬프에 오프셋 적용하기
생성한 오프셋을 타임스탬프에 더하면 업데이트된 날짜를 얻을 수 있습니다.
print("\nUpdated Timestamp...\n", timestamp + cbdOffset)
기준 날짜인 2021년 12월 31일은 금요일입니다. 영업일이 '월·화·수·금'으로 지정되어 있으므로, 첫 번째 유효 영업일은 다음 주 월요일(1월 3일), 두 번째 유효 영업일은 화요일(1월 4일)이 됩니다.
빈도 문자열과 빈도 이름 확인하기
freqstr 속성은 적용된 빈도를 문자열로 반환하고, name 속성은 해당 빈도의 이름을 반환합니다.
# 적용된 빈도를 문자열로 반환
print("\nFrequency applied on the given CustomBusinessDay Offset object...\n", cbdOffset.freqstr)
# 적용된 빈도의 이름을 반환
print("\nThe name of the frequency on the CustomBusinessDay object..\n", cbdOffset.name)
전체 예제 코드
import pandas as pd
# 타임스탬프 객체 생성
timestamp = pd.Timestamp('2021-12-31 08:35:10')
# 타임스탬프 출력
print("Timestamp...\n", timestamp)
# CustomBusinessDay 오프셋 생성
# CustomBusinessDay는 공휴일을 제외한 사용자 지정 영업일을 나타내는 DateOffset 하위 클래스
# weekmask로 유효한 영업일(요일) 지정
cbdOffset = pd.tseries.offsets.CustomBusinessDay(n=2, weekmask='Mon Tue Wed Fri')
# CustomBusinessDay 오프셋 출력
print("\nCustomBusinessDay Offset...\n", cbdOffset)
# 타임스탬프에 오프셋을 더해 업데이트된 타임스탬프 출력
print("\nUpdated Timestamp...\n", timestamp + cbdOffset)
# 적용된 빈도를 문자열로 반환
print("\nFrequency applied on the given CustomBusinessDay Offset object...\n", cbdOffset.freqstr)
# 적용된 빈도의 이름을 반환
print("\nThe name of the frequency on the CustomBusinessDay object..\n", cbdOffset.name)
실행 결과
Timestamp... 2021-12-31 08:35:10 CustomBusinessDay Offset... <2 * CustomBusinessDays> Updated Timestamp... 2022-01-04 08:35:10 Frequency applied on the given CustomBusinessDay Offset object... 2C The name of the frequency on the CustomBusinessDay object.. C
결과 해석
- CustomBusinessDay Offset:
<2 * CustomBusinessDays>는 두 영업일 단위로 이동하는 오프셋임을 의미합니다. - Updated Timestamp: 2021-12-31(금)에 두 개의 사용자 지정 영업일을 더하면 2022-01-04(화)가 됩니다. 토요일과 일요일은 weekmask에서 제외되었기 때문입니다.
- freqstr:
2C는 2일 단위의 커스텀 영업일 빈도를 나타내는 문자열입니다. - name:
C는 CustomBusinessDay 빈도의 고유 이름입니다.
마무리
이처럼 CustomBusinessDay.name 속성을 사용하면 오프셋 객체에 적용된 빈도의 이름을 손쉽게 확인할 수 있습니다. 공휴일이나 비영업일을 제외한 날짜 계산이 필요한 금융 데이터 분석, 배송 일정 산정, 업무 스케줄링 등에서 CustomBusinessDay를 적극적으로 활용해 보시기 바랍니다.