データ分析の効率化に貢献: Pandas Data Offsets と rule_code の使いこなしガイド


DateOffset オブジェクトは、以下の要素で構成されます。

  • day
    日付(デフォルトは現在の月と年)
  • year
    年(デフォルトは現在の年)
  • month
    月番号(デフォルトは現在の月)
  • week
    週番号(デフォルトは現在の週)
  • starting_day
    週の開始曜日(デフォルトは月曜日)
  • n
    オフセットの期間(デフォルトは 1)
  • freq
    オフセットの頻度(例: 'D' は日、 'W' は週、 'M' は月、 'Y' は年)

DateOffset.rule_code の詳細

rule_code 属性は、DateOffset オブジェクトのルールを文字列形式で表します。以下の形式で構成されます。

freq + str(n) + starting_day + week + month + year + day


  • YearEnd(3): 3 年後の年末を表します。rule_codeYE3 となります。
  • MonthEnd(1): 1 か月後の月末を表します。rule_codeMEND1 となります。
  • BDay(2): 2 営業日後の日付を表します。rule_codeBDAY2 となります。

DateOffset.rule_code の利用例

rule_code 属性は、DateOffset オブジェクトを文字列形式で表現したり、他の DateOffset オブジェクトと比較したりする際に役立ちます。


import pandas as pd

# DateOffset オブジェクトを作成
offset1 = pd.tseries.offsets.BDay(2)
offset2 = pd.tseries.offsets.MonthEnd(1)

# rule_code 属性を取得
rule_code1 = offset1.rule_code
rule_code2 = offset2.rule_code

# rule_code を比較
print(rule_code1 == rule_code2)  # False

# rule_code を文字列形式で表示
print(str(offset1))  # BDay(2)
print(str(offset2))  # MEnd(1)
  • rule_code 属性は、DateOffset オブジェクトのすべての属性を網羅しているわけではありません。
  • rule_code 属性は、Pandas バージョンによって異なる場合があります。


さまざまな DateOffset オブジェクトを作成

import pandas as pd

# 各種オフセットを作成
offsets = [
    pd.tseries.offsets.BDay(2),  # 2 営業日後
    pd.tseries.offsets.MonthEnd(1),  # 1 か月後の月末
    pd.tseries.offsets.YearEnd(3),  # 3 年後の年末
    pd.tseries.offsets.Week(2),  # 2 週後
    pd.tseries.offsets.QuarterEnd(1),  # 1 四半期後の月末
    pd.tseries.offsets.Easter(),  # 次回のイースター
]

各オフセットの rule_code を表示

for offset in offsets:
    print(f"オフセット: {offset}")
    print(f"  rule_code: {offset.rule_code}")
    print()

出力例

オフセット: BDay(2)
  rule_code: BDAY2

オフセット: MonthEnd(1)
  rule_code: MEND1

オフセット: YearEnd(3)
  rule_code: YE3

オフセット: Week(2)
  rule_code: W2

オフセット: QuarterEnd(1)
  rule_code: QEND1

オフセット: Easter()
  rule_code: EASTER

特定の rule_code に基づいて DateOffset オブジェクトを作成

rule_code = "MXD2"  # 2 か月後の月末

# rule_code を基に DateOffset オブジェクトを作成
offset = pd.tseries.offsets.DateOffset(rule_code=rule_code)

print(f"オフセット: {offset}")
print(f"  rule_code: {offset.rule_code}")

出力例

オフセット: MonthEnd(2)
  rule_code: MEND2

rule_code を使用して DateOffset オブジェクトを比較

offset1 = pd.tseries.offsets.BDay(2)
offset2 = pd.tseries.offsets.BDay(3)

# rule_code を比較
print(offset1.rule_code == offset2.rule_code)  # False
  • 最後に、rule_code を使用して 2 つの DateOffset オブジェクトを比較します。
  • その後、特定の rule_code ("MXD2") に基づいて DateOffset オブジェクトを作成します。
  • 次に、各オフセットの rule_code 属性を表示します。
  • 上記のコードでは、まず BDay(2)MonthEnd(1)YearEnd(3) などのさまざまな DateOffset オブジェクトを作成します。


オフセット属性の直接利用

rule_code 属性の代わりに、DateOffset オブジェクトの属性を直接利用することができます。例えば、以下のコードは同じ結果になります。

import pandas as pd

offset = pd.tseries.offsets.BDay(2)

# rule_code 属性を使用
rule_code = offset.rule_code
print(f"rule_code: {rule_code}")  # BDAY2

# オフセット属性を直接利用
freq = offset.freq
n = offset.n
print(f"freq: {freq}, n: {n}")  # freq: BDAY, n: 2

offset オブジェクトの文字列表現

str() 関数を使用して、DateOffset オブジェクトを文字列形式で表現することもできます。

offset = pd.tseries.offsets.MonthEnd(1)

# str() 関数を使用して文字列表現を取得
str_repr = str(offset)
print(f"文字列表現: {str_repr}")  # MonthEnd(1)

特定の情報のみ取得

rule_code 属性は、DateOffset オブジェクトに関するすべての情報を網羅しているわけではありません。特定の情報のみが必要な場合は、以下の方法で取得できます。

  • 日付
    offset.day

  • offset.year
  • 月番号
    offset.month
  • 週番号
    offset.week
  • 開始曜日
    offset.starting_day
  • オフセットの期間
    offset.n
  • オフセットの頻度
    offset.freq

pandas.tseries.offsets.DateOffset.rule_code 属性は便利なツールですが、状況によっては代替方法の方が適している場合があります。上記の代替方法を理解することで、より柔軟に DateOffset オブジェクトを操作することができます。

  • Pandas のバージョンによって、DateOffset オブジェクトの属性や方法が変更される場合があります。最新の情報については、公式ドキュメントを参照してください。
  • 上記の代替方法は、すべての DateOffset オブジェクトに適用できるわけではありません。一部のオフセットには、専用の属性や方法が必要になる場合があります。