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

Python Pandas - 単一ユニットの倍数の頻度でDateTimeIndexを丸める方法

DateTimeIndexを単一ユニットの倍数の頻度で丸める

PandasのDateTimeIndexを、単一ユニットの倍数となる頻度(例:10分間隔)で丸めるには、DateTimeIndex.round()メソッドを使用します。丸めの間隔はfreqパラメータで指定します。

必要なライブラリのインポート

まず、pandasをインポートします。

import pandas as pd

DatetimeIndexの作成

ここでは、期間5、頻度「H」(時間単位)、タイムゾーンをオーストラリア/アデレードに設定したDatetimeIndexを作成します。

datetimeindex = pd.date_range('2021-09-29 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='H')

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

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

10分間隔での丸め処理

次に、10分の頻度(=単一ユニットである「分」の10倍)でDateTimeIndexを丸めます。分単位の頻度を指定する際には「T」を使用します。

print("\nPerforming round operation with multiples of a single unit frequency...\n",
datetimeindex.round(freq='10T'))

補足: Pandas 2.x以降では、エイリアス「T」は非推奨となっており、代わりに「min」を使用することが推奨されています(例:freq='10min')。古いバージョンとの互換性が必要な場合を除き、「min」の使用を検討してください。

完全なコード例

以下に全体のコードを示します。

import pandas as pd

# 期間5、頻度H(時間単位)のDatetimeIndexを作成
# タイムゾーンはAustralia/Adelaide
datetimeindex = pd.date_range('2021-09-29 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='H')

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

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

# 10分の頻度(単一ユニットの倍数)でDateTimeIndexを丸める
# 分単位の頻度には「T」を使用
print("\nPerforming round operation with multiples of a single unit frequency...\n",
datetimeindex.round(freq='10T'))

実行結果

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

DateTimeIndex...
DatetimeIndex(['2021-09-29 07:20:32.261811624+09:30',
'2021-09-29 08:20:32.261811624+09:30',
'2021-09-29 09:20:32.261811624+09:30',
'2021-09-29 10:20:32.261811624+09:30',
'2021-09-29 11:20:32.261811624+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='H')
DateTimeIndex frequency...
<Hour>

Performing round operation with multiples of a single unit frequency...
DatetimeIndex(['2021-09-29 07:20:00+09:30', '2021-09-29 08:20:00+09:30',
'2021-09-29 09:20:00+09:30', '2021-09-29 10:20:00+09:30',
'2021-09-29 11:20:00+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)

出力のポイント

元のDatetimeIndexは秒以下の細かい値(20:32.261…)を持っていますが、round(freq='10T')を実行することで、各タイムスタンプが直近の10分区切り(07:20、08:20など)に丸められていることがわかります。また、丸め処理後のDatetimeIndexではfreq属性がNoneになっている点にも注意してください。これは、round操作によって元の規則的な頻度情報が保持されなくなるためです。

  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