holidays 라이브러리엔 어지간한 나라의 공휴일 정보가 담겨있다.
그중 우리나라것도 있으니 진짜 좋음. 오예.
1. holidays 라이브러리 설치
# 쉘에서 실행
pip install holidays
2. 기본적인 사용방법
import holidays
kr_holidays = holidays.KR()
이때 kr_holidays를 호출해보면
공휴일과 대체공휴일의 정보가 딕셔너리로 아름답게 담겨있다.
'''
kr_holidays 출력 결과
{datetime.date(2022, 1, 1): "New Year's Day",
datetime.date(2022, 1, 31): "The day preceding of Lunar New Year's Day",
datetime.date(2022, 2, 1): "Lunar New Year's Day",
datetime.date(2022, 2, 2): "The second day of Lunar New Year's Day",
datetime.date(2022, 3, 1): 'Independence Movement Day',
datetime.date(2022, 5, 1): 'Labour Day',
datetime.date(2022, 5, 5): "Children's Day",
datetime.date(2022, 5, 8): 'Birthday of the Buddha',
datetime.date(2022, 6, 6): 'Memorial Day',
datetime.date(2022, 8, 15): 'Liberation Day',
datetime.date(2022, 9, 9): 'The day preceding of Chuseok',
datetime.date(2022, 9, 10): 'Chuseok',
datetime.date(2022, 9, 11): 'The second day of Chuseok',
datetime.date(2022, 9, 12): 'Alternative holiday of Chuseok',
datetime.date(2022, 10, 3): 'National Foundation Day',
datetime.date(2022, 10, 9): 'Hangeul Day',
datetime.date(2022, 10, 10): 'Alternative holiday of Hangeul Day',
datetime.date(2022, 12, 25): 'Christmas Day'}
'''
출력 내용을 보면 알 수 있듯
인자는 datetime형으로 넣어야 한다.
[참고] print(kr_holidays) 하면 위와같이 출력되지 않는다.
하단 코드를 참고하면 위와 같이 보기 좋게 확인할 수 있다.
import pprint
pprint.pprint(kr_holidays)
3. 여러 가지 활용방법
3.1 공휴일의 일자와 명칭을 가져오고 싶은 경우
for day, day_name in kr_holidays.items():
print(day, day_name)
'''
출력 결과
2022-01-01 New Year's Day
2022-01-31 The day preceding of Lunar New Year's Day
2022-02-01 Lunar New Year's Day
2022-02-02 The second day of Lunar New Year's Day
2022-03-01 Independence Movement Day
2022-05-08 Birthday of the Buddha
2022-05-05 Children's Day
2022-05-01 Labour Day
2022-06-06 Memorial Day
2022-08-15 Liberation Day
2022-09-09 The day preceding of Chuseok
2022-09-10 Chuseok
2022-09-11 The second day of Chuseok
2022-09-12 Alternative holiday of Chuseok
2022-10-03 National Foundation Day
2022-10-09 Hangeul Day
2022-10-10 Alternative holiday of Hangeul Day
2022-12-25 Christmas Day
'''
holidays는 딕셔너리로 되어있기 때문에 딕셔너리의 함수를 이용할 수 있다.
그중 items()를 활용하여 공휴일의 일자(key)와 공휴일의 명칭(value)을 가져올 수 있다.
3.2 갖고 있는 여러 일자 중 휴일 출력하는 경우
for day in date_data:
if day in kr_holidays:
print(day)
date_data에는 2022-06-02 00:00:00 부터 2022-10-26 23:00:00 까지
3528개의 데이터가 Timestamp형으로 판다스의 시리즈에 담겨있는 상황이다.
이때 해당일자가 공휴일 안에 있다면 출력하도록 하는 코드이다.
실행하면 공휴일인 데이터가 출력된다.
중요한 점은
day in kr_holidays
이 코드를 실행해보면 알 수 있는데,
True, False로 반환한다.
3.3 공휴일 1, 아니면 0을 삽입하고 싶은 경우
만약 데이터프레임의 년원일 컬럼을 활용하여
공휴일일 경우 1, 아닌 경우 0으로 입력하여 컬럼명 holiday를 생성하고 싶다면
하단의 코드를 참고하면 된다.
# created_ at:년월일의 컬럼명
dt['holiday'] = dt.created_at.apply(lambda x: 1 if x in kr_holidays else 0)
holidays 공식문서 - 빠른 실행편
'Python' 카테고리의 다른 글
파이썬 인덱싱 슬라이싱 (0) | 2022.12.01 |
---|---|
파이썬 튜플 리스트 딕셔너리 (0) | 2022.11.17 |
파이썬 자료형(type) 정리-숫자와 문자 (0) | 2020.10.10 |
파이썬 변수명 규칙, 이름은 신중하게! (0) | 2020.10.06 |
파이썬 변수(Variable)의 정의 및 선언 (0) | 2020.09.23 |