🎉
Python 日本の祝日と土曜日・日曜日の日付一覧を取得する
はじめに
Pythonで日本の祝日と土曜日・日曜日の日付一覧を取得するコードを書いてみました。
注意:祝日の日付はholidays
というライブラリを使用して取得しているため、その結果は正確ではない可能性があります。
環境
・Google Colaboratory
コード
# 作成したい年度を入力してください。
year = 2024
import pandas as pd
import numpy as np
import datetime
import holidays
今回の要となるのが、holidaysという祝日を取得するライブラリです。
# year年の日本の祝日を取得
jp_holidays = holidays.CountryHoliday('JP', years=year)
# year年の土曜日と日曜日の日付を取得
start = str(year) + '-01-01'
end = str(year) + '-12-31'
weekend_dates = pd.date_range(start, end, freq='W-SAT') | \
pd.date_range(start, end, freq='W-SUN')
# 祝日と土日の日付を結合
dns = list(jp_holidays.keys()) + list(weekend_dates)
# データフレームを作成
df = pd.DataFrame({'date': dns}).drop_duplicates().sort_values('date').reset_index()
df.drop('index', axis=1, inplace=True)
データフレームを作成している部分では、祝日のリストと土日のリストを結合した際に被る日付があるため、.drop_duplicates()で一方を削除しています。また、採番がおかしくなるので、.reset_index()しました。この時に余計な列'index'ができてしまったので削除しています。
# フラグ変数の作成
df['is_holidays'] = np.where(df['date'].isin(list(jp_holidays.keys())), 1, 0)
df['is_sat'] = np.where(df['date'].isin(list(pd.date_range(start, end, freq='W-SAT'))), 1, 0)
df['is_sun'] = np.where(df['date'].isin(list(pd.date_range(start, end, freq='W-SUN'))), 1, 0)
# 日付のフォーマット変換(2020-01-01 -> 2020/1/1)
df['date'] = df['date'].dt.strftime('%Y/%-m/%-d')
# 結果を表示
display(df.head(10))
Discussion