Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Pandas – TimeDeltaIndexを1時間ごとの頻度でフロア操作(切り下げ)する方法

TimeDeltaIndexに対して1時間ごとの頻度でフロア操作(切り下げ)を行うには、TimeDeltaIndex.floor()メソッドを使用します。floor()は、各タイムデルタの値を指定した頻度の直近の区切りに切り下げてくれる便利なメソッドです。1時間ごとの頻度を指定したい場合は、freqパラメータに'H'を設定します。

まず、必要なライブラリをインポートしましょう。

import pandas as pd

次に、TimeDeltaIndexオブジェクトを作成します。ここでは「data」パラメータを使って、timedelta形式の文字列データを設定しています。

tdIndex = pd.TimedeltaIndex(data =['5 day 8h 20min 35us 45ns', '+17:42:19.999999',
'7 day 3h 08:16:02.000055', '+22:35:25.999999'])

作成したTimedeltaIndexを表示して確認します。

print("TimedeltaIndex...\n", tdIndex)

続いて、1時間ごとの頻度でフロア操作を実行します。freqパラメータに'H'を指定することで、分・秒・マイクロ秒以下の値が切り捨てられ、各値が直近の「時」単位に丸められます。

print("\nPerforming Floor operation with hourly frequency...\n",
tdIndex.floor(freq='H'))

サンプルコード(完全版)

以下が全体のコード例です。

import pandas as pd

# TimeDeltaIndexオブジェクトを作成
# 「data」パラメータでtimedelta形式のデータを設定
tdIndex = pd.TimedeltaIndex(data =['5 day 8h 20min 35us 45ns', '+17:42:19.999999',
'7 day 3h 08:16:02.000055', '+22:35:25.999999'])

# TimedeltaIndexを表示
print("TimedeltaIndex...\n", tdIndex)

# TimeDeltasの構成要素(日・時・分・秒など)をDataFrameとして返す
print("\nThe Dataframe of the components of TimeDeltas...\n", tdIndex.components)

# 1時間ごとの頻度でフロア操作を実行
# freq='H' を指定
print("\nPerforming Floor operation with hourly frequency...\n",
tdIndex.floor(freq='H'))

出力結果

上記のコードを実行すると、次のような結果が出力されます。

TimedeltaIndex...
TimedeltaIndex(['5 days 08:20:00.000035045', '0 days 17:42:19.999999',
'7 days 11:16:02.000055', '0 days 22:35:25.999999'],
dtype='timedelta64[ns]', freq=None)

The Dataframe of the components of TimeDeltas...
  days hours minutes seconds milliseconds microseconds nanoseconds
0   5    8      20       0            0             35          45
1   0   17      42      19          999            999           0
2   7   11      16       2            0             55           0
3   0   22      35      25          999            999           0

Performing Floor operation with hourly frequency...
TimedeltaIndex(['5 days 08:00:00', '0 days 17:00:00', '7 days 11:00:00',
'0 days 22:00:00'],
dtype='timedelta64[ns]', freq=None)

解説のポイント

出力結果を見ると、元の値が「5日8時間20分35.045マイクロ秒」だったものが、「5日8時間00分00秒」に切り下げられていることがわかります。同様に「17時間42分19.999999秒」は「17時間00分00秒」へと変換されています。

このようにfloor(freq='H')を使うと、時間より細かい単位(分・秒・ナノ秒など)がすべて切り捨てられ、1時間単位のきれいな値に整形できます。データの集計や前処理において、時間粒度を揃えたい場合に非常に役立ちます。なお、切り上げたい場合はceil()、四捨五入したい場合はround()メソッドを同じように使えます。

  1. Python Pandas – DateTimeIndexに対して1時間ごとの頻度でfloor(切り下げ)操作を実行する方法

    DateTimeIndexに対して1時間ごとの頻度でfloor(切り下げ)操作を実行するには、DateTimeIndex.floor()メソッドを使用します。1時間ごとの頻度を指定する場合は、freqパラメータにH(時間)を設定します。まず、必要なライブラリをインポートします。import pandas as pd次に、期間数を5、頻度を20分(20min)、タイムゾーンを「Australia/Adelaide」としてDatetimeIndexを作成します。datetimeindex = pd.date_range(2021-09-29 07:20:32.261811624, periods=

  2. Python PandasでTimedeltaを1時間単位の頻度で丸める方法

    Timedeltaを指定した解像度(頻度)で丸めたい場合は、timestamp.round()メソッドを使用します。1時間ごとの頻度で丸めるには、freqパラメータに「H」を指定します。必要なライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pdTimedeltaオブジェクトの作成TimeDeltasは、Python標準のdatetimeライブラリにおけるtimedeltaとは異なる表現形式を持つデータ型です。ここでは、pd.Timedelta()を使ってTimedeltaオブジェクトを作成します。timedelta = pd.Timedelta