Python으로 공휴일 리스트를 만들자

Taek goo Kim·2021년 7월 30일
3
post-custom-banner

Python Holiday 패키지

Python에 공휴일을 알 수 있는 라이브러리가 있어서 간단하게 소개하려고 합니다.
이름하여 holidays 패키지입니다.

github: https://github.com/dr-prodigy/python-holidays

현재 75개국이 넘는 국가들의 휴일을 제공하기 때문에, 타임시리즈 데이터를 분석하거나 에측모델의 성능을 향상시키고자 할 때 또는 앱서비스 등에서 유용하게 사용할 수 있을 것같습니다.

설치하기

설치 방법은 크게 어렵지 않습니다.

$ pip install holidays

사용하기

위에 링크를 걸어놓은 홈페이지에 방문하면 대략적인 간단한 사용법은 알 수 있기 때문에, 여기서는 DataFrame을 만드는 코드를 간략히 소개하려고 합니다.

import holidays
import pandas as pd

# holiday_list는 자동 또는 수동으로 생성하시면 됩니다. 여기 예제에서는 2021년 전체 날짜를 생성합니다.
holiday_list = ['2021-01-01', '2021-01-02', ... , '2021-12-31']

# 한국 휴일 객체 생성 
kr_holidays = holidays.KR()

# generate holiday table
holiday_df = pd.DataFrame(columns=['ds','holiday'])
holiday_df['ds'] = sorted(date_list)
holiday_df['holiday'] = holiday_df.ds.apply(lambda x: 'holiday' if x in kr_holidays else 'non-holiday')

그러면 아래와 같은 테이블이 생성됩니다.

dsholiday
02021-01-01holiday
12021-01-02non-holiday
.........
3642021-12-31non-holiday

음력 기반의 휴일도 가능할까?

2021년 추석은 양력 기준으로 9월 20일 ~ 22일인데 아래와 같이 테스트해보았습니다.

추석에 한해서 잘 동작하는 것 같습니다.

'2021-09-20' in kr_holidays
True
'2021-09-21' in kr_holidays
True
'2021-09-22' in kr_holidays
True
'2021-09-23' in kr_holidays
False

어디에 사용할까?

휴일 목록은 다양한 곳에서 활용될 수 있겠지만, 지금 생각나는 사용처는 아래와 같습니다.

  1. Time-Series기반의 데이터를 활용해서 Forecast을 수행할때 Holiday Effect를 고려하려면 필수로 휴일 목록이 필요합니다.
  2. 슬랙과 같은 메시지 서비스에서 봇을 통해 전송되는 메시지의 자동메시지를 휴일 목록을 고려하여 보낼 수 있습니다.
  3. 기타 등등
profile
Unknowns vastly exceeds knowns
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 12월 17일

감사합니다! 덕분에 잘 활용하고 있습니다!

답글 달기