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

Python Pandas入門:DateTimeIndexを分単位の頻度で丸める方法

pandasでDateTimeIndex(日時インデックス)を分単位の頻度で丸めるには、DateTimeIndex.round()メソッドを使用します。分単位の頻度を指定したい場合は、freq引数に'T'を設定します。なお、'T'は「min(minutes)」のエイリアスであり、どちらを指定しても同じ結果が得られます。

手順1:ライブラリのインポート

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

import pandas as pd

手順2:DateTimeIndexの作成

次に、期間5・頻度45秒('45s')のDatetimeIndexを作成します。タイムゾーンにはオーストラリアのアデレード(Australia/Adelaide)を指定します。

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

手順3:DateTimeIndexの表示

作成したDateTimeIndexを確認してみましょう。

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

手順4:分単位での丸め処理

DateTimeIndexに対して、分単位の頻度で丸め処理を実行します。分単位の場合は、freq引数に'T'を指定します。

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

完全なコード例

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

import pandas as pd

# 期間5・頻度45秒のDatetimeIndexを作成
# タイムゾーンは Australia/Adelaide
datetimeindex = pd.date_range('2021-09-29 07:00', periods=5, tz='Australia/Adelaide', freq='45s')

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

# DateTimeIndexの頻度を表示
print("DateTimeIndex frequency...\n", datetimeindex.freq)

# 分の値を取得
res = datetimeindex.minute

# 分だけを表示
print("\nThe minute from DateTimeIndex...\n", res)

# 分単位の頻度で丸め処理を実行
# 分単位の場合は 'T' を指定
print("\nPerforming round operation with minute frequency...\n",
datetimeindex.round(freq='T'))

実行結果

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

DateTimeIndex...
DatetimeIndex(['2021-09-29 07:00:00+09:30', '2021-09-29 07:00:45+09:30',
'2021-09-29 07:01:30+09:30', '2021-09-29 07:02:15+09:30',
'2021-09-29 07:03:00+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='45S')
DateTimeIndex frequency...
<45 * Seconds>

The minute from DateTimeIndex...
Int64Index([0, 0, 1, 2, 3], dtype='int64')
Performing round operation with minute frequency...
DatetimeIndex(['2021-09-29 07:00:00+09:30', '2021-09-29 07:01:00+09:30',
'2021-09-29 07:02:00+09:30', '2021-09-29 07:02:00+09:30',
'2021-09-29 07:03:00+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)

補足:丸め処理のポイント

round()メソッドは、最も近い指定頻度の時刻へ丸めを行います。実行結果を見ると、「07:00:45」は「07:01:00」に、「07:02:15」は「07:02:00」に丸められていることがわかります。また、丸め処理後のインデックスでは元の頻度情報(freq='45S')が失われ、freq=Noneになっている点にも注意が必要です。

さらに、pandas 2.2以降では大文字のエイリアス'T'は非推奨となっており、代わりに小文字の'min'を使用することが推奨されています。新規プロジェクトではdatetimeindex.round(freq='min')と記述しておくと、将来のバージョンアップでも安全に動作します。

  1. Python Pandas入門:タイムデルタを分単位の頻度で丸める方法

    タイムデルタ(Timedelta)を指定した解像度で丸めるには、round() メソッドを使用します。分単位の頻度で丸めたい場合は、freq パラメータに T を指定します。 必要なライブラリのインポート まず、pandas をインポートします。 import pandas as pd Timedeltaオブジェクトの作成 TimeDeltas は、Python の標準的な datetime ライブラリで使われる timedelta とは異なる表現を持ちます。ここでは、日・時・分・秒・ミリ秒・ナノ秒を含む Timedelta オブジェクトを作成します。 timedelta = pd.Timed

  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