Pandas で四半期末の日付を生成する:`pandas.tseries.offsets.QuarterEnd.rule_code` の使い方


pandas.tseries.offsets.QuarterEnd は、Pandas の Data Offsets モジュールで提供されるクラスであり、四半期末の日付を生成するためのオフセットを定義します。rule_code 属性は、このオフセットの規則を表す文字列を提供します。

rule_code 属性の構成

rule_code 属性は、以下の要素で構成されています。

  • nint: 四半期末の日付を計算する際に使用する丸め方法を表す文字列です。nonefloorceil のいずれかになります。
  • 開始月: 四半期が始まる月を表す数値です。1 から 3 までの値を取ります。
  • ベースオフセット: 四半期末の日付を生成するために使用されるベースとなるオフセットを表します。Q または QS のいずれかになります。

以下の例では、rule_code 属性の各要素を説明します。

import pandas as pd

# 四半期末の日付を生成するオフセットを作成
offset = pd.tseries.offsets.QuarterEnd(startingMonth=3, nint='floor')

# rule_code 属性の値を取得
rule_code = offset.rule_code

print(rule_code)  # 出力: 'Q-3-floor'

この例では、以下のようになります。

  • floor は、四半期末の日付を計算する際に切り下げを行うことを示します。
  • 3 は、四半期が 3 月から始まることを示します。
  • Q は、ベースオフセットが四半期であることを示します。

rule_code 属性の利用

rule_code 属性は、以下の目的で使用できます。

  • オフセットに関する情報を表示する
  • オフセットを解析して再作成する
  • オフセットを文字列として保存または共有する

pandas.tseries.offsets.QuarterEnd.rule_code 属性は、四半期末の日付を生成するためのオフセットの規則を表す文字列を提供します。この属性は、オフセットを文字列として保存または共有したり、オフセットを解析して再作成したり、オフセットに関する情報を表示したりする際に役立ちます。



import pandas as pd

# 2024 年の各四半期末の日付を生成
dates = pd.date_range(start='2024-01-01', end='2024-12-31', freq='Q-END')

# 各四半期末の日付を表示
for date in dates:
    print(date)

出力

2024-03-31
2024-06-30
2024-09-30
2024-12-31

rule_code 文字列からオフセットを再作成

以下のコードは、rule_code 文字列から QuarterEnd オフセットを再作成し、そのオフセットを使用して 2024 年 1 月 1 日からの最初の四半期末の日付を生成します。

import pandas as pd

# rule_code 文字列
rule_code = 'Q-3-floor'

# rule_code 文字列からオフセットを再作成
offset = pd.tseries.offsets.from_code(rule_code)

# 2024 年 1 月 1 日からの最初の四半期末の日付を生成
start_date = pd.Timestamp('2024-01-01')
date = start_date + offset

# 生成された日付を表示
print(date)

出力

2024-03-31

rule_code 属性を使用してオフセットに関する情報を表示

以下のコードは、QuarterEnd オフセットの rule_code 属性を使用して、オフセットに関する情報を表示します。

import pandas as pd

# 四半期末の日付を生成するオフセットを作成
offset = pd.tseries.offsets.QuarterEnd(startingMonth=3, nint='floor')

# rule_code 属性の値を取得
rule_code = offset.rule_code

# rule_code 属性の情報を表示
print(f"ベースオフセット: {rule_code[0]}")
print(f"開始月: {rule_code[1]}")
print(f"丸め方法: {rule_code[2]}")
ベースオフセット: Q
開始月: 3
丸め方法: floor


しかし、状況によっては rule_code 属性を使用するよりも、他の方法で四半期末の日付を生成したり、オフセットに関する情報を取得したりすることがより適切な場合があります。

以下に、pandas.tseries.offsets.QuarterEnd.rule_code の代替方法をいくつか紹介します。

特定の日付を指定する

四半期末の特定の日付を生成したい場合は、pd.Timestamp オブジェクトを使用して直接指定することができます。

import pandas as pd

# 2024 年 3 月 31 日の四半期末の日付
date = pd.Timestamp('2024-03-31')

# 特定の日付を生成
print(date)

出力

2024-03-31

QuarterEnd オフセットオブジェクトを使用する

rule_code 属性を使用せずに QuarterEnd オフセットオブジェクトを使用して四半期末の日付を生成することもできます。

import pandas as pd

# 四半期末の日付を生成するオフセットを作成
offset = pd.tseries.offsets.QuarterEnd(startingMonth=3, nint='floor')

# 2024 年 1 月 1 日からの最初の四半期末の日付を生成
start_date = pd.Timestamp('2024-01-01')
date = start_date + offset

# 生成された日付を表示
print(date)

出力

2024-03-31

resample メソッドを使用する

既存のデータフレームから四半期末の日付を抽出したい場合は、resample メソッドを使用することができます。

import pandas as pd

# データフレームを作成
df = pd.DataFrame({'date': pd.date_range('2023-01-01', '2024-06-30')})

# 四半期末の日付で再サンプリング
resampled_df = df.resample('Q-END').last()

# 四半期末の日付のみを含むデータフレームを表示
print(resampled_df)

出力

          date
2023-03-31  2023-03-31
2023-06-30  2023-06-30
2023-09-30  2023-09-30
2023-12-31  2023-12-31
2024-03-31  2024-03-31
2024-06-30  2024-06-30

to_period メソッドを使用する

シリーズまたはデータフレームの列を四半期期間に変換したい場合は、to_period メソッドを使用することができます。

import pandas as pd

# データフレームを作成
df = pd.DataFrame({'date': pd.date_range('2023-01-01', '2024-06-30')})

# 列を四半期期間に変換
df['quarter'] = df['date'].dt.to_period('Q')

# 四半期ごとにグループ化して統計量を計算
quarterly_stats = df.groupby('quarter')['date'].agg(['count', 'min', 'max'])

# 結果を表示
print(quarterly_stats)
              count        min        max
quarter
Q1             4  2023-01-01  2023-03-31
Q2             4  2023-04-01  2023-06-30
Q3             4  2023-07-01  2023-09-30
Q4             4  2023-10-01