Pandas QuarterEnd オフセットの固定日付判定: is_anchored 解説と代替方法
この解説では、Pandas の Data Offsets における pandas.tseries.offsets.QuarterEnd.is_anchored
メソッドについて、分かりやすく説明します。
Data Offsets とは
Data Offsets は、Pandas で時間間隔を表現するために使用されるクラスです。例えば、日ごと、週ごと、月ごと、四半期ごとなどの間隔を表現できます。
QuarterEnd とは
pandas.tseries.offsets.QuarterEnd
クラスは、四半期末を表す Data Offset です。例えば、2024 年 1 月 1 日から 2024 年 12 月 31 日までの期間を QuarterEnd
で表すと、2024 年 3 月 31 日、2024 年 6 月 30 日、2024 年 9 月 30 日、2024 年 12 月 31 日の4つの日付になります。
is_anchored メソッドとは
is_anchored
メソッドは、Data Offset が固定された日付に依存しているかどうかを判断します。
QuarterEnd.is_anchored の動作
QuarterEnd.is_anchored
メソッドは常に False
を返します。これは、QuarterEnd
が固定された日付ではなく、常に四半期末を表すためです。
例
import pandas as pd
offset = pd.tseries.offsets.QuarterEnd()
print(offset.is_anchored())
このコードを実行すると、以下の出力が得られます。
False
is_anchored メソッドの注意点
is_anchored
メソッドは、Pandas 2.2.0 以降では非推奨となっています。代わりに、obj.n == 1
を使用することを推奨されています。
pandas.tseries.offsets.QuarterEnd.is_anchored
メソッドは、QuarterEnd
が固定された日付に依存しているかどうかを判断します。しかし、このメソッドは非推奨となっているため、obj.n == 1
を使用する方が推奨されます。
QuarterEnd
以外にも、MonthEnd
やYearEnd
などの Data Offset もis_anchored
メソッドを持ちます。
コード例
import pandas as pd
# 四半期末を表す Data Offset を作成
offset = pd.tseries.offsets.QuarterEnd()
# is_anchored メソッドを使用して、Data Offset が固定された日付に依存しているかどうかを確認
print(offset.is_anchored())
# 非推奨の代わりに obj.n == 1 を使用
print(obj.n == 1)
出力
False
True
解説
このコード例では、以下の処理を行っています。
pandas.tseries.offsets.QuarterEnd
クラスを使用して、四半期末を表す Data Offset を作成します。is_anchored
メソッドを使用して、Data Offset が固定された日付に依存しているかどうかを確認します。- 非推奨となった
is_anchored
メソッドの代わりに、obj.n == 1
を使用して同じ結果を取得します。
- このコード例は、Pandas 2.2.0 以降で実行することを前提としています。
obj.n == 1 を使用する
非推奨となった is_anchored
メソッドの代わりに、obj.n == 1
を使用することで、同じ結果を取得できます。これは、Data Offset の n
属性が 1 であるかどうかを確認するものです。
import pandas as pd
offset = pd.tseries.offsets.QuarterEnd()
print(obj.n == 1)
obj.is_anchored メソッドの代わりに obj.relative 属性を使用する
pandas
バージョン 1.3.0 以降では、is_anchored
メソッドの代わりに relative
属性を使用できます。relative
属性は、Data Offset が固定された日付に依存しているかどうかだけでなく、その日付が何であるかを返します。
import pandas as pd
offset = pd.tseries.offsets.QuarterEnd()
print(obj.relative)
このコードを実行すると、QuarterEnd
が固定された日付に依存していないことを示す None
が返されます。
obj.relative
属性は、Data Offset が固定された日付を表すdatetime
オブジェクトを返します。obj.n
属性は、Data Offset の間隔を表します。例えば、MonthEnd
の場合は 1、YearEnd
の場合は 12 になります。