Pandas の DateOffset オブジェクトは、日付と時刻データを扱う際に時間オフセットを行うためのツールです。
以下は DateOffset の主な特徴と使い方です:
基本概念
DateOffset オブジェクトは Timedelta に似ていますが、カレンダー上の日時ルールに従うものであり、時間の性質に基づく算術計算を直接行うわけではありません。つまり、DateOffset は実際の暦日を考慮します。例えば、月や年をまたぐ日付を扱う場合、日数の差を正しく計算します。一方、Timedelta は指定された日数を単純に加算するだけで、月や年の変化を考慮しません。
使用方法
DateOffset は算術演算子(+ など)や apply メソッドを使って日付オフセット操作を実行できます。
例えば、次のように DateOffset を使って月や時間を増やすことができます:
実例
ts + DateOffset(months=3) # 3ヶ月を追加
ts + DateOffset(hours=2) # 2時間を追加
パラメータを指定しない場合、DateOffset() はデフォルトで1暦日を追加します:
ts + DateOffset() # 默认增加一天
サポートされているパラメータ
DateOffset はさまざまなパラメータをサポートしており、年、月、週、日、時、分、秒などの時間単位を追加または置換するよう指定できます。これらのパラメータは、オフセット値に追加するもの(years、months、weeks、days、hours、minutes、seconds など)と、オフセット値を置換するもの(year、month、day、weekday、hour、minute、second など)があります。
特殊メソッド
DateOffset には、日付を前後に直近の有効な日付へロールする rollforward() メソッドと rollback() メソッドもあります。例えば、営業日オフセット(BDay)を使用すると、週末をスキップして次の営業日に直接ロールします。
実例
two_business_days = 2 * pd.offsets.BDay()
friday + two_business_days # 2営業日を追加すると、週末をスキップします
頻度文字列
DateOffset は頻度文字列またはオフセットエイリアスをサポートしており、freq パラメータとして渡すことができます。これらの頻度文字列は DateOffset オブジェクトとそのサブクラスを表し、日時インデックスの頻度を定義します。
DateOffset は、Pandas で時系列データを扱う際に非常に便利なツールであり、日付と時刻のオフセット操作を実際のカレンダールールに沿ったものにします。
よく使う関数
DateOffset コンストラクタ
| クラス/メソッド | 説明 |
|---|---|
pd.DateOffset(**kwargs) |
DateOffset オブジェクトを作成し、カスタム時間オフセットをサポートします。 |
よく使われる DateOffset サブクラス
| 类 | 説明 |
|---|---|
pd.offsets.Day() |
日数のオフセットを表します。 |
pd.offsets.BDay() |
営業日(週末を除く)のオフセットを表します。 |
pd.offsets.Hour() |
時間のオフセットを表します。 |
pd.offsets.Minute() |
分のオフセットを表します。 |
pd.offsets.Second() |
秒のオフセットを表します。 |
pd.offsets.Milli() |
ミリ秒のオフセットを表します。 |
pd.offsets.Micro() |
マイクロ秒のオフセットを表します。 |
pd.offsets.MonthEnd() |
月末のオフセットを表します。 |
pd.offsets.MonthBegin() |
月初のオフセットを表します。 |
pd.offsets.YearEnd() |
年末のオフセットを表します。 |
pd.offsets.YearBegin() |
年初のオフセットを表します。 |
pd.offsets.QuarterEnd() |
四半期末のオフセットを表します。 |
pd.offsets.QuarterBegin() |
四半期初のオフセットを表します。 |
pd.offsets.Week() |
週のオフセットを表します。 |
pd.offsets.WeekOfMonth() |
月内の第何週かのオフセットを表します。 |
DateOffset プロパティ
| プロパティ | 説明 |
|---|---|
DateOffset.name |
DateOffset の名前を返します。 |
DateOffset.n |
オフセットの数量を返すか設定します。 |
DateOffset.normalize |
時間を深夜0時に正規化するかどうかを返すか設定します。 |
DateOffset メソッド
| メソッド | 説明 |
|---|---|
DateOffset.apply(other) |
オフセットを別の日時オブジェクトに適用します。 |
DateOffset.rollforward(other) |
日付を次のオフセットに前方ロールします。 |
DateOffset.rollback(other) |
日付を前のオフセットに後方ロールします。 |
DateOffset.is_anchored() |
オフセットがアンカーされているか(つまり頻度が固定されているか)を確認します。 |
DateOffset.onOffset(date) |
日付がオフセットと整列しているかを確認します。 |
実例
実例
from pandas.tseries.offsets import Day, BDay, MonthEnd
# DateOffset を作成
offset = Day(3)
print(offset) # 出力 <3 * Days>
# DateOffset を適用
date = pd.Timestamp('2023-01-01')
new_date = date + offset
print(new_date) # 出力 2023-01-04
# よく使われるサブクラスを使用
bday_offset = BDay(2)
new_bdate = date + bday_offset
print(new_bdate) # 出力 2023-01-05(週末をスキップ)
# 月末オフセット
month_end_offset = MonthEnd()
new_month_end = date + month_end_offset
print(new_month_end) # 出力 2023-01-31
詳細パラメータ説明
pd.DateOffset()
| パラメータ | 説明 |
|---|---|
years |
年数のオフセット。 |
months |
月数のオフセット。 |
weeks |
週数のオフセット。 |
days |
日数のオフセット。 |
hours |
時間数のオフセット。 |
minutes |
分数のオフセット。 |
seconds |
秒数のオフセット。 |
milliseconds |
ミリ秒数のオフセット。 |
microseconds |
マイクロ秒数のオフセット。 |
nanoseconds |
ナノ秒数のオフセット。 |
pd.offsets.BDay()
| パラメータ | 説明 |
|---|---|
n |
オフセットの数量。デフォルトは 1。 |
normalize |
時間を深夜0時に正規化するかどうか。デフォルトはFalse。 |
pd.offsets.MonthEnd()
| パラメータ | 説明 |
|---|---|
n |
オフセットの数量。デフォルトは 1。 |
normalize |
時間を深夜0時に正規化するかどうか。デフォルトはFalse。 |
より詳細な情報が必要な場合は、以下を参照してください。Pandas 公式ドキュメント。
その他の拡張