この記事ではPythonとpandasを使用して、平日と休日(土日祝日)を判定し、データを抽出する方法について解説していきます。
ポイントとしては、`pandas`, `to_datetime`, `dayofweek`, `isin`関数を使用することです。
初心者でもわかりやすいように、変数名を少々変わった名称にしています。
それでは詳しく見ていきましょう!
pandasで平日か休日(土日のみ)かを判定する方法
それではまず、pandasを使った平日か休日の判定方法について解説していきます。
jupyter notebookなどの各開発環境を開いて、以下のコードをコピペしましょう。
import pandas as pd
CSVファイルの読み込み
df = pd.read_csv('your_file.csv')
日時情報列をdatetime型に変換
df['datetime'] = pd.to_datetime(df['datetime'])
平日か休日かを判定し、結果を新しい列に格納
df['day_type'] = df['datetime'].dt.dayofweek.apply(lambda x: '休日' if x >= 5 else '平日')
コードのAlt+F8を押し、マクロ選択画面でday_type関数を実行します。
このコードでは、まずpandasをインポートし、CSVファイルを読み込んでいます。次に、日時情報を持つ列をdatetime型に変換しています。
その後、dt.dayofweekメソッドを使って曜日を取得し、lambda関数を使用して曜日が5(土曜)以上の場合は「休日」とし、それ以外は「平日」と判定しています。
こうすることで、平日なら「平日」、土日なら「休日」という判定結果が表示されます。
pandasで平日か休日(祝日)かを判定する方法(祝日リストを使用)
続いては、祝日リストを使用して祝日判定を行う方法について解説していきます。
土日だけで無く祝日も考慮したい場合はこちらのコードもあわせるといいです!
以下のコード(2023年を例に)をコピペしましょう。
なお、祝日判定ライブラリはいくつかありますが、場合によっては正確な判定ができないケースもあるため、リストにしておく方がより確実ですね。
# 2023年の祝日リスト
holidays = [
'2023-01-01', '2023-01-02', '2023-01-09', '2023-02-11',
'2023-02-23', '2023-03-21', '2023-04-29', '2023-05-03',
'2023-05-04', '2023-05-05', '2023-07-17', '2023-08-11',
'2023-09-18', '2023-09-23', '2023-10-09', '2023-11-03',
'2023-11-23'
]
# 祝日をdatetime型に変換
holidays = pd.to_datetime(holidays)
# 祝日の判定
df['is_holiday'] = df['datetime'].isin(holidays)
コードのAlt+F8を押し、マクロ選択画面で`is_holiday`関数を実行します。
このコードでは、まず2023年の祝日をリストとして定義し、そのリストをdatetime型に変換しています。
その後、`isin`関数を用いて、各日付が祝日リストに含まれているかを判定しています。
これにより、土日以外の祝日も正確に休日として識別することができます。
はい、土日と祝日を合わせて休日と判定し、それ以外を平日と判定することは可能です。以下に詳細なコード例を示します。
pandasで平日か休日(土日祝日の両方)かを判定する方法
次に、土日と祝日を合わせて休日と判定する方法について解説します。
import pandas as pd
# CSVファイルの読み込み
df = pd.read_csv('your_file.csv')
# 日時情報列をdatetime型に変換
df['datetime'] = pd.to_datetime(df['datetime'])
# 2023年の祝日リスト
holidays = [
'2023-01-01', '2023-01-02', '2023-01-09', '2023-02-11',
'2023-02-23', '2023-03-21', '2023-04-29', '2023-05-03',
'2023-05-04', '2023-05-05', '2023-07-17', '2023-08-11',
'2023-09-18', '2023-09-23', '2023-10-09', '2023-11-03',
'2023-11-23'
]
# 祝日をdatetime型に変換
holidays = pd.to_datetime(holidays)
# 土日または祝日の判定
df['is_holiday'] = df['datetime'].dt.dayofweek >= 5 | df['datetime'].isin(holidays)
# 最終的に平日か休日かのラベル付け
df['day_type'] = df['is_holiday'].apply(lambda x: '休日' if x else '平日')
このコードでは、まず2023年の祝日をリストとして定義し、datetime型に変換しています。
その後、土日(`dt.dayofweek >= 5`)または祝日(`isin(holidays)`)であるかどうかを判定し、それに基づいてデータフレームの新しい列に「平日」または「休日」の表示をしています。
このようにすることで、土日と祝日をまとめて休日として扱い、残りを平日として扱うことができます!
まとめ Pythonで土日祝日や営業日を判定する方法
Pythonとpandasを使った平日休日の判定とデータ抽出の方法についての解説をしました!
是非ご参考に^_^
コメント