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'」が新しい標準表記です。古いバージョンとの互換性が必要な場合を除き、今後は新しい表記を使うようにしましょう。
-
Python Pandas - Timedelta(タイムデルタ)を秒単位で丸める方法
PandasでTimedelta(タイムデルタ)を指定した解像度に丸めるには、round()メソッドを使用します。秒単位の頻度で丸めたい場合は、freqパラメータにsを指定します。このメソッドは、ミリ秒やナノ秒などの細かい端数を切り捨て、指定した頻度に最も近い値へと丸めてくれます。時刻データの前処理や集計において非常に便利な機能です。手順1:必要なライブラリをインポートするまず、Pandasをインポートします。import pandas as pd手順2:Timedeltaオブジェクトを作成する日・時間・分・秒・ミリ秒・ナノ秒を含むTimedeltaオブジェクトを作成します。timedelta
-
Python PandasでTimedeltaを1時間単位の頻度で丸める方法
Timedeltaを指定した解像度(頻度)で丸めたい場合は、timestamp.round()メソッドを使用します。1時間ごとの頻度で丸めるには、freqパラメータに「H」を指定します。必要なライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pdTimedeltaオブジェクトの作成TimeDeltasは、Python標準のdatetimeライブラリにおけるtimedeltaとは異なる表現形式を持つデータ型です。ここでは、pd.Timedelta()を使ってTimedeltaオブジェクトを作成します。timedelta = pd.Timedelta