データ分析の効率化に貢献: 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_code はYE3
となります。MonthEnd(1)
: 1 か月後の月末を表します。rule_code はMEND1
となります。BDay(2)
: 2 営業日後の日付を表します。rule_code はBDAY2
となります。
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 オブジェクトに適用できるわけではありません。一部のオフセットには、専用の属性や方法が必要になる場合があります。