pandas Data offsets: CustomBusinessDay.is_year_startの使い方

2024-04-02

pandas.tseries.offsets.CustomBusinessDay.is_year_start とは?

概要:

  • CustomBusinessDay は、祝日などを除いた営業日ベースの日付オフセットを表すクラスです。
  • is_year_start は、CustomBusinessDay オブジェクトを受け取り、その日付が その年の最初の営業日 かどうかを判定します。 *判定は、以下の条件に基づいて行われます。
    • 日付がその年の1月1日であること
    • 日付がその年の最初の営業日であること

使用例:

from pandas.tseries.offsets import CustomBusinessDay

# 祝日を設定
holidays = ['2024-01-01', '2024-01-02']

# カスタムビジネスデイオブジェクトを作成
bday = CustomBusinessDay(holidays=holidays)

# 2024年1月1日が年始かどうかを確認
is_year_start = bday.is_year_start(pd.Timestamp('2024-01-01'))

# Trueが出力される
print(is_year_start)

# 2024年1月2日が年始かどうかを確認
is_year_start = bday.is_year_start(pd.Timestamp('2024-01-02'))

# Falseが出力される
print(is_year_start)

出力:

True
False

補足:

  • CustomBusinessDay オブジェクトは、weekmask 属性で曜日を設定したり、holidays 属性で祝日を設定したりすることができます。
  • is_year_start は、CustomBusinessDay オブジェクト以外の日付オブジェクトに対して使用することはできません。


pandas.tseries.offsets.CustomBusinessDay.is_year_start サンプルコード集

祝日と曜日パターンによる年始判定

from pandas.tseries.offsets import CustomBusinessDay

# 祝日と曜日パターンを設定
holidays = ['2024-01-01', '2024-01-02']
weekmask = 'Mon Tue Wed Thu Fri'

# カスタムビジネスデイオブジェクトを作成
bday = CustomBusinessDay(holidays=holidays, weekmask=weekmask)

# 2024年1月1日(月)が年始かどうかを確認
is_year_start = bday.is_year_start(pd.Timestamp('2024-01-01'))

# Trueが出力される
print(is_year_start)

# 2024年1月2日(火)が年始かどうかを確認
is_year_start = bday.is_year_start(pd.Timestamp('2024-01-02'))

# Falseが出力される
print(is_year_start)

# 2024年1月3日(水)が年始かどうかを確認
is_year_start = bday.is_year_start(pd.Timestamp('2024-01-03'))

# Trueが出力される
print(is_year_start)
True
False
True

祝日と年末年始休暇による年始判定

from pandas.tseries.offsets import CustomBusinessDay

# 祝日と年末年始休暇を設定
holidays = ['2024-01-01', '2024-01-02', '2023-12-31', '2024-01-01']

# カスタムビジネスデイオブジェクトを作成
bday = CustomBusinessDay(holidays=holidays)

# 2024年1月1日(月)が年始かどうかを確認
is_year_start = bday.is_year_start(pd.Timestamp('2024-01-01'))

# Trueが出力される
print(is_year_start)

# 2024年1月2日(火)が年始かどうかを確認
is_year_start = bday.is_year_start(pd.Timestamp('2024-01-02'))

# Falseが出力される
print(is_year_start)

出力:

True
False

特定の年の年始判定

from pandas.tseries.offsets import CustomBusinessDay

# 2024年の年始を判定
bday = CustomBusinessDay(year=2024)

# 2024年1月1日(月)が年始かどうかを確認
is_year_start = bday.is_year_start(pd.Timestamp('2024-01-01'))

# Trueが出力される
print(is_year_start)

# 2024年1月2日(火)が年始かどうかを確認
is_year_start = bday.is_year_start(pd.Timestamp('2024-01-02'))

# Falseが出力される
print(is_year_start)

出力:

True
False

pandas.tseries.offsets.CustomBusinessDay.is_year_start は、CustomBusinessDay オブジェクトにおける年始判定に便利な関数です。祝日や曜日パターン、年末年始休暇などを考慮した判定が可能です。

サンプルコードを参考に、様々な条件で年始判定を行ってみてください。



pandasで年始判定を行う他の方法

dt.is_year_start 属性

pandasDatetimeIndex オブジェクトには、dt.is_year_start という属性があり、その日付が年始かどうか を判定することができます。

import pandas as pd

# DatetimeIndexを作成
df = pd.DataFrame({'Date': pd.to_datetime(['2023-12-31', '2024-01-01', '2024-01-02'])})

# dt.is_year_start属性で年始判定
df['IsYearStart'] = df['Date'].dt.is_year_start

# 結果を確認
print(df)

出力:

         Date  IsYearStart
0 2023-12-31       False
1 2024-01-01        True
2 2024-01-02       False

DateOffset オブジェクト

pandasDateOffset オブジェクトを使用して、年始からの日数 を計算し、年始判定を行うことができます。

from pandas.tseries.offsets import YearBegin

# 年始からの日数を計算
df['DaysSinceYearStart'] = df['Date'] - YearBegin(1)

# 年始判定
df['IsYearStart'] = df['DaysSinceYearStart'] == 0

# 結果を確認
print(df)

出力:

         Date  DaysSinceYearStart  IsYearStart
0 2023-12-31              -1       False
1 2024-01-01                0        True
2 2024-01-02                1       False

自作関数

上記の方法以外にも、条件に応じて年始判定を行う自作関数を作成することができます。

def is_year_start(date):
  """
  指定された日付が年始かどうかを判定する関数

  Args:
    date: pandasのDatetimeIndex型の日付

  Returns:
    True: 年始
    False: 年始ではない
  """

  # 祝日リスト
  holidays = ['2024-01-01', '2024-01-02']

  # 年始判定
  if date.month == 1 and date.day == 1 and date not in holidays:
    return True
  else:
    return False

# 年始判定
df['IsYearStart'] = df['Date'].apply(is_year_start)

# 結果を確認
print(df)

出力:

         Date  IsYearStart
0 2023-12-31       False
1 2024-01-01        True
2 2024-01-02       False

pandas で年始判定を行うには、dt.is_year_start 属性、DateOffset オブジェクト、自作関数など、いくつかの方法があります。

それぞれの方法の特徴を理解し、目的に合った方法を選択してください。




Pandas Data Offsets:CustomBusinessHour.rule_code徹底解説

CustomBusinessHour は、Data Offsets の一種で、営業時間 に基づいて日付をオフセットします。つまり、土日や祝日などを除いて、ビジネス日のみオフセットを進めることができます。CustomBusinessHour



Pandasで曜日・月・四半期・年ごとの集計:LastWeekOfMonthで月単位の分析

LastWeekOfMonth は、その月の最後の週を表す Data Offset です。例えば、2024年3月であれば、LastWeekOfMonth は 2024年3月25日から3月31日までの期間を表します。LastWeekOfMonth


Pandasでイースターの日付と週番号を扱う:Data Offsets と Easter オブジェクト

Pandas Data Offsets は、日付や時間間隔を表現するための便利なツールです。日付の加算・減算、日付範囲の作成、時系列データの分析など、さまざまな場面で活用できます。Easter. is_year_end 関数とは?pandas


Pandasで特定の曜日に設定された月の週を操作する: pandas.tseries.offsets.WeekOfMonth.onOffset を使いこなす

pandas. tseries. offsets. WeekOfMonth は、特定の曜日に設定された月の週を表すオフセットです。onOffset メソッドは、このオフセットを使用して、指定された曜日の月の週に一致する日付を計算するために使用されます。


Pandas Data offsetsとCustomBusinessMonthBeginの威力

CustomBusinessMonthBegin. is_year_startは、その月が年の初めかどうかを判定する属性です。つまり、1月の月初めの営業日であればTrue、それ以外の月であればFalseを返します。CustomBusinessMonthBegin



【Pandas超便利技】DataFrameに条件付きでスタイルを適用!「pandas.io.formats.style.Styler.apply」徹底解説

pandas. io. formats. style. Styler. apply は、Pandas DataFrame のセル、行、列、または全体に CSS スタイルを適用するためのメソッドです。スタイルは、文字列形式の CSS プロパティ (例: "background-color: red; font-size: 16px") で指定します。


Pandas データ分析:サンプルコード集 - データの読み込み

Pandas ライブラリは、データ分析や操作に欠かせないツールであり、その中でも "IO tools (text, CSV, HDF5, ...)" は、様々な形式のデータを読み書きするための重要な機能を提供します。この解説では、"IO tools" の基本的な操作を分かりやすく説明し、プログラミング初心者でも理解しやすいように、具体的なコード例と図を用いて解説していきます。


ローリングウィンドウ、エクスパンディングウィンドウ、スライディングウィンドウの違いとは?

Pandasの窓関数(Windowing operations)は、データフレーム内の特定の範囲(ウィンドウ)に対して集計を行い、各データポイントに集計結果を追加する強力な機能です。株価分析、移動平均、季節性分析など、様々なデータ分析で活躍します。


Pandas Data Offsets: Minute.kwds とは?

pandas. tseries. offsets. Minute. kwds は、Pandasライブラリでタイムシリーズ分析を行う際に使用される DateOffset オブジェクト の属性の一つです。この属性は、分単位 での日付オフセットを定義する際に、追加情報 を指定するために使用されます。


【上級者向け】Pandas Dataframe GroupByで累積最大値を効率的に計算する高度なテクニック

例:以下のDataFrameについて、"A"列と"B"列それぞれについて、グループごとに累積的な最大値を計算してみましょう。出力結果:グループ "a" の "A" 列: 1, 2, 3, 1, 2, 3グループ "a" の "B" 列: 4, 5, 6, 7, 8, 9