pandas.DataFrameに祝日の特徴量を作る
はじめに
昨日公開した下記の記事で、以下のような感想を書きました。
祝日フラグは、手動で作成したので地味に辛かった思い出があります。
何となく書いたボヤキだったのですが、ありがたいことに次のリプライを頂きました。
休日フラグはこれ使いましたhttps://t.co/oEgMmeH3Pi
— wakame@kaggleやるマン (@wakame1367) December 20, 2018
お恥ずかしながら、私はこのパッケージの存在を知りませんでした。次の記事でも紹介されている通り、かなり使い勝手の良いライブラリのようです。
本記事では、反省と次なる機会への準備を兼ねて、pandas.DataFrameに祝日の特徴量を作る方法をまとめておきます。
データの準備
まずは、日付の行を持つpandas.DataFrameを作成します。
import pandas as pd from datetime import date, timedelta today = date.today() date_time = [] for i in range(1000): date_time.append(today + timedelta(days = i)) df = pd.DataFrame({ 'datetime': date_time }) print(df.head())
datetime 0 2018-12-21 1 2018-12-22 2 2018-12-23 3 2018-12-24 4 2018-12-25
祝日の特徴量の追加
datetimeごとに、関数を適用します。それだけだとTrue/Falseで値が返ってきますが、機械学習アルゴリズムへの適用を考えると1/0が望ましいので、intに変換しておきました。
import jpholiday df['is_holiday'] = df['datetime'].map(jpholiday.is_holiday).astype(int) print(df.head())
datetime is_holiday 0 2018-12-21 0 1 2018-12-22 0 2 2018-12-23 1 3 2018-12-24 1 4 2018-12-25 0
単なる祝日だけではなく、振替休日も取り扱っています。