0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Python】祝日情報を追加する

Last updated at Posted at 2021-05-19

目的

時系列データの分析で曜日依存について検証するとき、祝日情報も追加したい。

ゴール

時系列データフレームの日付列に対し dt.weekday で 曜日列"weekday" 追加し 月:0、火:1、水:2、木:3、金:4、土:5、日:6 とした後、祝日該当日に 祝:7 を上書きする。
さらに、カレンダーでは平日となっている年末年始休暇期間など経済活動が休日モードになっている日も任意に 祝:7 として扱えるようにする。

実践

import pandas as pd

2019年→2020年の年末年始を含む期間の日時情報のデータフレーム "df" を処理

# 日付列"date"をタイムスタンプ型にする
df["date"] = pd.to_datetime(df["date"])

# 曜日情報列"weekday"をデータフレームに追加
df["weekday"] = df["date"].dt.weekday

年末年始休暇期間中(2019-12-30:月曜、2019-12-31大晦日:火曜、2020-01-01元旦:水曜、2020-01-02:木曜、2020-01-03:金曜)は全て平日判定👇
df.png
1955年以降の日本の祝日がリストアップされたcsvデータが取得できる内閣府webページ『国民の祝日について』から祝日データ "syukujitsu.csv" を読み込み
!!ATTN!!
"syukujitsu.csv" は厳密な祝日しかリストアップされていない(年末年始休暇期間やお盆休みなど経済活動が休日モードな平日は別途定義してリストへ任意追加する必要あり)

# "syukujitsu.csv"読み込み
syukujitsu = pd.read_csv("https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv", encoding="SHIFT-JIS")

# "国民の祝日・休日月日"列をタイムスタンプ型にする
syukujitsu["国民の祝日・休日月日"] = pd.to_datetime(syukujitsu["国民の祝日・休日月日"])

2019年→2020年の年末年始期間を絞って表示すると、元旦のみ上がってくる👇
yobi.png
経済が休日モードの大晦日や三が日も祝日と同様に扱いたい!
 → 祝日同様に扱いたい休日をリストアップしてデータフレームにする

# 年末年始休暇の追加休日リスト"add"
add = ["2019/12/30", "2019/12/31", "2020/1/2", "2020/1/3"]

# 追加休日リストをデータフレーム"ADD"にする
ADD = pd.DataFrame(add, columns=["国民の祝日・休日月日"])
ADD["国民の祝日・休日月日"] = pd.to_datetime(ADD["国民の祝日・休日月日"])

内閣府の祝日データフレームに、作成した追加休日データフレームを結合して、祝日データフレームを更新

# "syukujitsu"と"ADD"を結合して更新した祝日データフレーム"syuku"
syuku = pd.concat([syukujitsu, ADD]).sort_values("国民の祝日・休日月日").reset_index(drop=True)

2019年→2020年の年末年始に期間を絞って表示すると、元旦を含む年末年始休暇期間も祝日として上がってきた👇
syuku.png
日時情報のデータフレーム "df" の曜日情報列に対し、更新した祝日データフレーム"syuku"でリストアップした日に 祝:7 を付与する

# 祝日フラグ7を該当日に付与する
for i in syuku["国民の祝日・休日月日"]:
    df["weekday"].mask(df["date"] == i, 7, inplace=True)

祝日データフレームで指定した日の"weekday"を7に上書き完了👇
df_rvs.png

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?