pandas.tseries.offsets.CustomBusinessMonthBegin.is_year_endの使い方とサンプルコード

2024-04-02

pandas.tseries.offsets.CustomBusinessMonthBegin.is_year_end は、pandas ライブラリでカスタムビジネス月始オフセットの日付が年末かどうかを判定する関数です。

詳細

  • CustomBusinessMonthBegin は、カスタムビジネス月始オフセットを表すクラスです。
  • is_year_end は、このクラスのメソッドで、引数として渡された日付が年末かどうかを判定します。
  • 末年とは、12月31日を指します。

引数

  • dt : 日付を表す pandas.Timestamp 型または datetime.datetime 型のオブジェクト

返値

  • dt が年末であれば True 、そうでなければ False

import pandas as pd

# カスタムビジネス月始オフセットを作成
offset = pd.tseries.offsets.CustomBusinessMonthBegin(weekmask="Mon Tue Wed Thu Fri")

# 2024年12月31日のオフセットを取得
dt = pd.Timestamp("2024-12-31") + offset

# 末年かどうかを確認
is_year_end = dt.is_year_end()

print(is_year_end)  # True

補足

  • CustomBusinessMonthBegin オフセットは、月末ではなく月初に基づいています。
  • 祝日などの非営業日は考慮されません。


pandas.tseries.offsets.CustomBusinessMonthBegin.is_year_end サンプルコード

サンプルコード1: 祝日を含む年末判定

import pandas as pd

# 祝日を設定
holidays = ["2024-12-25"]

# カスタムビジネス月始オフセットを作成
offset = pd.tseries.offsets.CustomBusinessMonthBegin(weekmask="Mon Tue Wed Thu Fri", holidays=holidays)

# 2024年12月31日のオフセットを取得
dt = pd.Timestamp("2024-12-31") + offset

# 末年かどうかを確認
is_year_end = dt.is_year_end()

print(is_year_end)  # False
  • 祝日 2024-12-25 は非営業日として考慮されます。
  • そのため、2024-12-31 は年末ではなく、False が返されます。

サンプルコード2: 異なるweekmaskによる年末判定

import pandas as pd

# 異なるweekmaskを設定
weekmasks = ["Mon Tue Wed Thu Fri", "Mon Tue Wed Thu"]

for weekmask in weekmasks:
    # カスタムビジネス月始オフセットを作成
    offset = pd.tseries.offsets.CustomBusinessMonthBegin(weekmask=weekmask)

    # 2024年12月31日のオフセットを取得
    dt = pd.Timestamp("2024-12-31") + offset

    # 末年かどうかを確認
    is_year_end = dt.is_year_end()

    print(f"weekmask: {weekmask}, is_year_end: {is_year_end}")

出力例

weekmask: Mon Tue Wed Thu Fri, is_year_end: True
weekmask: Mon Tue Wed Thu, is_year_end: False

解説

  • 1つ目の weekmask ("Mon Tue Wed Thu Fri") では、金曜日が月末となるため、2024-12-31 は年末と判定されます。

サンプルコード3: 過去の日付に対する年末判定

import pandas as pd

# 過去の日付を設定
dt = pd.Timestamp("2023-12-31")

# カスタムビジネス月始オフセットを作成
offset = pd.tseries.offsets.CustomBusinessMonthBegin()

# 末年かどうかを確認
is_year_end = dt.is_year_end()

print(is_year_end)  # True

解説

  • 過去の日付であっても、is_year_end は正しく判定されます。


pandas.tseries.offsets.CustomBusinessMonthBegin.is_year_end の代替方法

方法1: 手動で判定

def is_year_end(dt, weekmask="Mon Tue Wed Thu Fri"):
    """
    引数として渡された日付が年末かどうかを判定します。

    Args:
        dt: 日付を表す `pandas.Timestamp` 型または `datetime.datetime` 型のオブジェクト
        weekmask: 週マスクを表す文字列

    Returns:
        dtが年末であれば True、そうでなければ False
    """

    # 月末を取得
    month_end = dt.replace(day=1) + pd.offsets.MonthEnd()

    # 月末が金曜日かどうかを確認
    is_friday = month_end.weekday() == 4

    # 月末が金曜日であれば、年末と判定
    return is_friday

# 例
dt = pd.Timestamp("2024-12-31")
weekmask = "Mon Tue Wed Thu Fri"

is_year_end = is_year_end(dt, weekmask)

print(is_year_end)  # True

解説

  • この方法は、手動で月末を取得し、それが金曜日かどうかを確認することで年末を判定します。

方法2: pandas のその他の機能を使用

def is_year_end(dt):
    """
    引数として渡された日付が年末かどうかを判定します。

    Args:
        dt: 日付を表す `pandas.Timestamp` 型または `datetime.datetime` 型のオブジェクト

    Returns:
        dtが年末であれば True、そうでなければ False
    """

    # 月末を取得
    month_end = dt.replace(day=1) + pd.offsets.MonthEnd()

    # 月末と翌月の1日の差分を計算
    diff = month_end - (month_end + pd.offsets.Day())

    # 差分が1日であれば、年末と判定
    return diff == pd.Timedelta(days=1)

# 例
dt = pd.Timestamp("2024-12-31")

is_year_end = is_year_end(dt)

print(is_year_end)  # True

解説

  • この方法は、月末と翌月の1日の差分を計算することで年末を判定します。

方法3: 外部ライブラリを使用

from dateutil.relativedelta import relativedelta

def is_year_end(dt):
    """
    引数として渡された日付が年末かどうかを判定します。

    Args:
        dt: 日付を表す `pandas.Timestamp` 型または `datetime.datetime` 型のオブジェクト

    Returns:
        dtが年末であれば True、そうでなければ False
    """

    # 翌年1月1日を取得
    next_year_jan_1 = dt + relativedelta(years=1, months=1, day=1)

    # 差分を計算
    diff = next_year_jan_1 - dt

    # 差分が1日であれば、年末と判定
    return diff == pd.Timedelta(days=1)

# 例
dt = pd.Timestamp("2024-12-31")

is_year_end = is_year_end(dt)

print(is_year_end)  # True

解説

  • この方法は、dateutil ライブラリの relativedelta 関数を使用して、翌年1月1日を取得し、差分を計算することで年末を判定します。
  • 処理速度



Pandasでイースターの日付を扱う:Data offsetsとEaster.normalize

pandas. tseries. offsets. Easterは、イースターの日付を表すためのData offsetです。Easter. normalizeは、このData offsetを用いて、指定された日付をイースターの日付に正規化する関数です。



Pandas.tseries.offsets.CustomBusinessMonthBeginを使いこなす

pandas. tseries. offsets. CustomBusinessMonthBegin. rollback は、Pandasの「Data offsets」機能で、カスタムビジネス月始のオフセットを指定された日付から過去方向にロールバックするために使用されます。


Pandas Data Offsets: pandas.tseries.offsets.LastWeekOfMonth.apply の使い方

Pandas の Data Offsets は、時間間隔に基づいて日付を操作するための便利なツールです。pandas. tseries. offsets. LastWeekOfMonth は、その中でも特定の月に属する最後の週に関連するオフセットを表します。apply メソッドは、このオフセットを DatetimeIndex や Series などのデータ構造に適用し、各要素に関連する最後の週の日付を計算するために使用されます。


Pandasで月末から15日と月末を表す:SemiMonthEnd.freqstr徹底解説

SemiMonthEndは、月末から15日と月末を表すData Offsetです。例えば、2024年4月15日は月末から15日、2024年4月30日は月末に当たります。SemiMonthEnd. freqstrは、SemiMonthEndオフセットの文字列表現を取得するための属性です。これは、データフレームやインデックスの周波数を表示したり、日付範囲を生成したりする際に役立ちます。


Pandas Data Offsets と Tick.kwds で時間操作をマスターする

Tick は、Data Offsets の一種で、マイクロ秒単位の時間間隔を表します。Tick オブジェクトは、pandas. tseries. offsets. Tick クラスを使用して生成されます。Tick. kwds は、Tick オブジェクトを生成する際に使用できるオプション引数の辞書です。この辞書には、以下のキーを指定できます。



Pandas Data offsets と CustomBusinessDay.calendar を徹底解説

CustomBusinessDay は、BusinessDay オフセットを拡張したもので、祝日や週末を除いてビジネス日のみを進めることができます。さらに、calendar 属性を使って、特定の地域や機関の祝日カレンダーを指定することができます。


pandas.Series.compare 完全ガイド:2つの Series を徹底比較

Series. compare は、以下の引数を受け取ります。other: 比較対象となる Seriesmethod: 比較方法 'eq': 等価比較 'ne': 不等価比較 'lt': 小さい 'le': 以下 'gt': 大きい 'ge': 以上


PandasのData OffsetsとQuarterEnd.rollforward

このチュートリアルでは、pandas. tseries. offsets. QuarterEnd. rollforward メソッドについて詳しく説明します。このメソッドは、指定された日付から次の四半期末までの期間を計算します。このコードを実行すると、以下の出力が得られます。


金融データ分析もこれで安心:pandas Milli.onOffset でミリ秒単位の価格変動を分析

pandas は Python で最も人気のあるデータ分析ライブラリの 1 つです。時系列データの処理においても非常に強力で、pandas. tseries モジュールには、日付や時刻の操作を簡単に行うための様々な機能が用意されています。その中でも pandas


PandasのMonthEnd.name属性:月単位の時系列データ分析をマスターするための必須アイテム

pandas. tseries. offsets. MonthEnd. name は、パンダライブラリのタイムシリーズモジュールにおける重要な属性です。これは、MonthEnd オフセットオブジェクトの名前を表し、月単位の時系列データ分析において、特定の月の末日を指す際に役立ちます。