본문 바로가기
판다스/중급 판다스

[pandas] 영업일(business day)을 배열로 생성하는 방법

by 김판다t 2023. 8. 28.

판다스에서 영업일(business day)을 배열로 생성하는 방법

주말을 제외해 영업일 가져오기

 

판다스에서는 date_range 함수를 통해 날짜 배열을 얻을 수 있으며, 주기(freq)를 'B'로 지정하면 토요일과 일요일을 제외한 영업일을 얻을 수 있습니다.

 

다음 코드를 통해 2023-08-10부터 5개의 영업일을 추출해 보겠습니다.

import pandas as pd
pd.date_range('2023-08-10', periods=5, freq='B')
DatetimeIndex(['2023-08-10', '2023-08-11', '2023-08-14', '2023-08-15', '2023-08-16'],
              dtype='datetime64[ns]', freq='B')

 

 


지정한 공휴일을 제외해 영업일 가져오기

 

위 결과에서 토요일과 일요일은 제외되었지만 2023년 8월 15일 광복절은 제외되지 않았습니다.  공휴일까지 제외하고자 한다면, bdate_range 함수를 사용합니다.

  1. 공휴일을 저장한 리스트를 생성합니다. (여기서는 holidays라는 변수명에 저장).
  2. bdate_range 함수를 사용하여 주기(freq)를 'C'로 지정하고, 매개변수 holidays에 앞서 저장한 리스트를 입력합니다. (C는 custom business day의 약자입니다.)
holidays = ['2023-08-15']
pd.bdate_range('2023-08-10', periods=5, freq='C', holidays=holidays)
DatetimeIndex(['2023-08-10', '2023-08-11', '2023-08-14', '2023-08-16', '2023-08-17'],
              dtype='datetime64[ns]', freq='C')

 

 

공휴일인 2023년 8월 15일이 제외해 제대로 영업일을 반환하는 결과를 얻을 수 있습니다. 다만 모든 공휴일을 직접 리스트로 입력하는 것은 번거롭기에, 별도의 데이터 소스에서 불러오는 방법을 추천합니다.

 

공휴일 소스 추천 링크 : https://aspdotnet.tistory.com/2259

 


영업일의 기준 요일 지정하기

 

만약 영업일로 지정할 요일을 설정하고 싶다면, bdate_range 함수의 매개변수 weekmask를 활용합니다. 예를 들어, 우리 회사는 토요일에도 근무하고, 일요일과 공휴일만 휴무입니다. 이 기준에 따라 2023-8-10부터 5개의 영업일을 가져오는 방법은 다음과 같습니다.

weekmask = 'Mon Tue Wed Thu Fri Sat'
holidays = ['2023-08-15']
pd.bdate_range('2023-08-10', periods=5, freq='C', holidays=holidays, weekmask=weekmask)
DatetimeIndex(['2023-08-10', '2023-08-11', '2023-08-12', '2023-08-14','2023-08-16'],
              dtype='datetime64[ns]', freq='C')

 

 

토요일은 영업일에 포함되며, 공휴일과 일요일만 제외된 5개의 영업일이 반환되었습니다. 


교보문고 구매 페이지, 알라딘 구매 페이지yes24 구매 페이지

 

 

 

 

 

 

유튜브에서 판다스 강의 중입니다.

https://www.youtube.com/@KimPandas