LoginSignup
2
2

More than 1 year has passed since last update.

pandasを用いて祝日を取得

Last updated at Posted at 2022-04-03

はじめに

年次作業などでシステムのプロパティファイル(祝日の定義)などを更新するとき、祝日を簡単に取得できたらいいなと思いました。pandasを用いると簡単に取得できたので紹介します。

環境

  • python 3.7.4
  • Windows10

取得データ

データ取得

ダウンロード後、カラム名を変更。

import pandas as pd

url = "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"
df = pd.read_csv(url, encoding="SHIFT-JIS")
df = df.rename(
    columns={
        "国民の祝日・休日月日": "national_holiday_ymd",
        "国民の祝日・休日名称": "national_holiday_name",
    }
)

データ整形

df["national_holiday_ymd"] = pd.to_datetime(
    df["national_holiday_ymd"], format="%Y-%m-%d"
)
# year(年度)カラムを追加
df.loc[df["national_holiday_ymd"].dt.month >= 4, "year"] = df[
    "national_holiday_ymd"
].dt.year
df.loc[df["national_holiday_ymd"].dt.month < 4, "year"] = (
    df["national_holiday_ymd"].dt.year - 1
)

# yearカラムをfloat型からint型に変換
df["year"] = df["year"].astype(int)
# stringに変換
df["month"] = df["national_holiday_ymd"].dt.month.astype(str)
df["day"] = df["national_holiday_ymd"].dt.day.astype(str)
# m/dの形にする
df["date"] = df["month"].str.cat(df["day"], sep="/")

df_img.png

2022年度のデータに絞り日付を出力

# 2022年度を抽出
# 最後のデータは','は不要なので分岐させています。
df_tmp = df.query("year == 2022").reset_index()
# 日付のみを1行で出力
for index, item in df_tmp.iterrows():
    if index == len(df_tmp["date"]) - 1:
        print("'" + item["date"] + "'", end="")
    else:
        print("'" + item["date"] + "'" + ",", end="")

出力結果は下記。

'4/29','5/3','5/4','5/5','7/18','8/11','9/19','9/23','10/10','11/3','11/23','1/1','1/2','1/9','2/11','2/23','3/21

参考ページ

https://qiita.com/toshikawa/items/2d535906b42b9332b743
https://tamiz-blog.com/programming/pandas/pandas20210221/

2
2
2

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
2
2