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

PandasでDateTimeIndexを1時間ごとの頻度で丸める方法|round()の使い方を解説

PandasでDateTimeIndexを1時間ごとの頻度に丸めるには、DateTimeIndex.round()メソッドを使用します。1時間ごとの頻度を指定する場合は、freqパラメータに「'H'」を設定します。

実装の手順

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

import pandas as pd

続いて、期間5つ・頻度「T」(分単位)でDatetimeIndexを作成します。タイムゾーンはオーストラリア/アデレード(Australia/Adelaide)を指定しています。

datetimeindex = pd.date_range('2021-09-29 07:00', periods=5, tz='Australia/Adelaide', freq='35T')

作成したDateTimeIndexを表示してみましょう。

print("DateTimeIndex...\n", datetimeindex)

そして、1時間ごとの頻度でDateTimeIndexに対して丸め処理を実行します。1時間ごとの頻度には「'H'」を使用します。

print("\nPerforming round operation with hourly frequency...\n",
datetimeindex.round(freq='H'))

コード例全体

以下は、ここまでの手順をまとめた完全なサンプルコードです。

import pandas as pd

# 期間5・頻度「T」(分単位)でDatetimeIndexを作成
# タイムゾーンは Australia/Adelaide を指定
datetimeindex = pd.date_range('2021-09-29 07:00', periods=5, tz='Australia/Adelaide', freq='35T')

# 表示
print("DateTimeIndex...\n", datetimeindex)

# 「時」の部分だけを取得
res = datetimeindex.hour
print("\nThe hour from DateTimeIndex...\n", res)

# 1時間ごとの頻度でDateTimeIndexを丸める
# 1時間ごとの頻度には 'H' を使用
print("\nPerforming round operation with hourly frequency...\n",
datetimeindex.round(freq='H'))

実行結果

このコードを実行すると、次のような出力が得られます。

DateTimeIndex...
DatetimeIndex(['2021-09-29 07:00:00+09:30', '2021-09-29 07:35:00+09:30',
'2021-09-29 08:10:00+09:30', '2021-09-29 08:45:00+09:30',
'2021-09-29 09:20:00+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='35T')

The hour from DateTimeIndex...
Int64Index([7, 7, 8, 8, 9], dtype='int64')

Performing round operation with hourly frequency...
DatetimeIndex(['2021-09-29 07:00:00+09:30', '2021-09-29 08:00:00+09:30',
'2021-09-29 08:00:00+09:30', '2021-09-29 09:00:00+09:30',
'2021-09-29 09:00:00+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)

補足:round()の丸めルールと注意点

round()メソッドは、指定した頻度の境界に最も近い時刻へ値を丸めます。たとえば7時35分は8時0分へ、8時10分は8時0分へというように、30分を境にして前後の整時刻へ振り分けられます。これは一般的な四捨五入と同じ挙動です。

また、Pandas 2.x以降では「'T'」や「'35T'」のような分を表すエイリアスは非推奨となり、代わりに「'min'」「'35min'」の使用が推奨されています。同様に、1時間ごとの頻度も「'h'」が新しい標準表記です。古いバージョンとの互換性が必要な場合を除き、今後は新しい表記を使うようにしましょう。

  1. Python Pandas - Timedelta(タイムデルタ)を秒単位で丸める方法

    PandasでTimedelta(タイムデルタ)を指定した解像度に丸めるには、round()メソッドを使用します。秒単位の頻度で丸めたい場合は、freqパラメータにsを指定します。このメソッドは、ミリ秒やナノ秒などの細かい端数を切り捨て、指定した頻度に最も近い値へと丸めてくれます。時刻データの前処理や集計において非常に便利な機能です。手順1:必要なライブラリをインポートするまず、Pandasをインポートします。import pandas as pd手順2:Timedeltaオブジェクトを作成する日・時間・分・秒・ミリ秒・ナノ秒を含むTimedeltaオブジェクトを作成します。timedelta

  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