見出し画像

休日データ

日本の休日をPythonで管理する必要がでたので,試してみた.

python-holidaysというパッケージがある.Prophetはこれを使っている.

インストールして試してみた.

!pip install holidays
from datetime import date
import holidays
jp_holidays = holidays.Japan()
date(2015, 1, 1) in jp_holidays 
jp_holidays

一度,日付を入れたクエリをしないと年度が固定されないためか何も出てこない.返値は辞書でこんな感じだ.

{datetime.date(2015, 1, 1): '元日',
datetime.date(2015, 1, 12): '成人の日',
datetime.date(2015, 2, 11): '建国記念の日',
datetime.date(2015, 3, 21): '春分の日',
datetime.date(2015, 4, 29): '昭和の日',
datetime.date(2015, 5, 3): '憲法記念日',
datetime.date(2015, 5, 4): 'みどりの日',
datetime.date(2015, 5, 5): 'こどもの日',
datetime.date(2015, 7, 20): '海の日',
datetime.date(2015, 9, 21): '敬老の日',
datetime.date(2015, 9, 23): '秋分の日',
datetime.date(2015, 10, 12): '体育の日',
datetime.date(2015, 11, 3): '文化の日',
datetime.date(2015, 11, 23): '勤労感謝の日',
datetime.date(2015, 12, 23): '天皇誕生日',
datetime.date(2015, 9, 22): '国民の休日',
datetime.date(2015, 5, 6): '振替休日'}

日本人が作ったjapandasというのもある.これはPandasの日付を日本風に変えたものだ.

http://sinhrks.hatenablog.com/entry/2015/03/02/000040

2019年のカレンダーを比較してみると,holidaysは12/23を休日と勘違いするが,japandasは大丈夫なようだ.

!pip install japandas
import japandas as jpd
calendar = jpd.JapaneseHolidayCalendar()
for date in jp_holidays:
   if date in calendar.holidays():
       print(date)
   else:
       print("no",date)
>>>
2019-01-01
2019-01-14
2019-02-11
2019-03-21
2019-04-29
2019-05-03
2019-05-04
2019-05-05
2019-07-15
2019-08-11
2019-09-16
2019-09-23
2019-10-14
2019-11-03
2019-11-23
no 2019-12-23  <= ここが間違い!
2019-05-06
2019-08-12
2019-11-04

という訳でjapandasの方を使うべきだが,holidaysのソースをいじった方が簡単かもしれない.

この記事が気に入ったらサポートをしてみませんか?