Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 매터
- 티스토리챌린지
- 파이썬
- Espressif
- 나스닥
- Apple
- Python
- 공모주
- 애플
- 엔비디아
- 코스피
- Home Assistant
- 오블완
- ConnectedHomeIP
- homebridge
- 현대통신
- Bestin
- 퀄컴
- 국내주식
- esp32
- raspberry pi
- 미국주식
- MQTT
- RS-485
- 월패드
- matter
- 힐스테이트 광교산
- 해외주식
- 배당
- 홈네트워크
Archives
- Today
- Total
YOGYUI
2022년 공휴일을 알아보자 (feat. 공공데이터포털) 본문
반응형
2022년 공휴일 정보
공공데이터포털(data.go.kr)의 "한국천문연구원_특일 정보" Open API를 활용하면 공휴일 정보를 알 수 있다
2021년도 이제 끝나가니, 2022년은 공휴일이 무슨 요일인지 한번 훑어보자
import datetime
import requests
import pandas as pd
from bs4 import BeautifulSoup, element
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def getHolidayDataFrame(year: int) -> pd.DataFrame:
url = "http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo"
api_key_encoded = "Your key from data.go.kr"
api_key_decoded = requests.utils.unquote(api_key_encoded, encoding="utf-8")
params = {
"ServiceKey": api_key_decoded,
"solYear": year,
"numOfRows": 100
}
weekday_name = ["월", "화", "수", "목", "금", "토", "일"]
response = requests.get(url, params=params)
xml = BeautifulSoup(response.text, "lxml")
def parseItem(item: element.Tag) -> dict:
dt = datetime.datetime.strptime(item.find("locdate").text.strip(), '%Y%m%d')
item_dict = {
"이름": item.find("datename").text.strip(),
"날짜": dt,
"요일": weekday_name[dt.weekday()]
}
return item_dict
item_list = [parseItem(x) for x in xml.find("items")]
return pd.DataFrame(item_list)
if __name__ == "__main__":
df_holiday_2022 = getHolidayDataFrame(2022)
app = QApplication([])
app.setStyle('fusion')
table = QTableWidget()
table.setColumnCount(len(df_holiday_2022.columns))
table.setHorizontalHeaderLabels(df_holiday_2022.columns)
table.setRowCount(len(df_holiday_2022))
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
table.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
for row in range(table.rowCount()):
record = df_holiday_2022.iloc[row]
item = QTableWidgetItem(record['이름'])
table.setItem(row, 0, item)
item = QTableWidgetItem(record['날짜'].strftime('%Y-%m-%d'))
item.setTextAlignment(Qt.AlignVCenter | Qt.AlignHCenter)
table.setItem(row, 1, item)
weekday = record['요일']
item = QTableWidgetItem(weekday)
item.setTextAlignment(Qt.AlignVCenter | Qt.AlignHCenter)
if weekday in ['토', '일']:
item.setForeground(QBrush(Qt.red))
table.setItem(row, 2, item)
table.show()
app.exec()
실행결과
[참고]
제헌절(7월 17일)은 국경일이지만 2008년부터 공휴일에서 제외되었다
식목일(4월 5일)은 2006년부터 공휴일에서 제외되었다
추석 마지막날과 한글날이 일요일이라 2일의 대체공휴일 발생
총 19일의 공휴일이 예정되어 있다
In [1]: df_holiday_2022
Out[1]:
이름 날짜 요일
0 1월1일 2022-01-01 토
1 설날 2022-01-31 월
2 설날 2022-02-01 화
3 설날 2022-02-02 수
4 삼일절 2022-03-01 화
5 대통령선거일 2022-03-09 수
6 어린이날 2022-05-05 목
7 부처님오신날 2022-05-08 일
8 전국동시지방선거 2022-06-01 수
9 현충일 2022-06-06 월
10 광복절 2022-08-15 월
11 추석 2022-09-09 금
12 추석 2022-09-10 토
13 추석 2022-09-11 일
14 대체공휴일 2022-09-12 월
15 개천절 2022-10-03 월
16 한글날 2022-10-09 일
17 대체공휴일 2022-10-10 월
18 기독탄신일 2022-12-25 일
이 중 주말(토, 일)을 제외하면
df_holiday_2022_weekday = df_holiday_2022[~df_holiday_2022['요일'].str.contains('토') & ~df_holiday_2022['요일'].str.contains('일')]
In [2]: len(df_holiday_2022_weekday)
Out[2]: 13
주중 공휴일은 총 13일이다
Thanks to 대통령선거, 전국동시지방선거 ^^
(어째 매번 차악次惡을 뽑는 선거가 계속되는건지... 헬조선의 미래가 위태롭다)
끝~!
반응형
'Software > Python' 카테고리의 다른 글
Python::typing::Literal - 변수값 범위 명시 (2) | 2022.01.24 |
---|---|
Pyppeteer - Chromium 다운로드 시 SSLCertVerificationError 발생할 경우 (0) | 2022.01.04 |
pandas - 중복된 요소 넘버링하기 (0) | 2021.12.15 |
pandas - 데이터프레임 데이터형(dtype) 확인 (0) | 2021.09.21 |
PyQt5 - QMenuBar location in macOS (0) | 2021.09.17 |