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

Python Pandas - 秒単位の頻度でDateTimeIndexにフロア操作を実行する方法

DateTimeIndexに対して秒単位の頻度でフロア(切り下げ)操作を実行するには、DateTimeIndex.floor()メソッドを使用します。秒単位の頻度を指定する場合は、freqパラメータに'S'を設定します。

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

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

import pandas as pd

DateTimeIndexの作成

次に、開始日時を指定し、頻度を「S」(秒)として5期間のDatetimeIndexを作成します。タイムゾーンはオーストラリアのアデレード(Australia/Adelaide)に設定しています。

datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='40S')

作成したDateTimeIndexを表示します。

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

秒単位でのフロア操作

DateTimeIndexの日時に対して、秒単位の頻度でフロア操作を実行します。秒単位の頻度を指定するため、freqパラメータには'S'を渡します。これにより、ナノ秒以下の端数が切り捨てられ、秒単位の時刻に丸められます。

print("\nPerforming floor operation with seconds frequency...\n",
datetimeindex.floor(freq='S'))

完全なコード例

以下がコード全体です。

import pandas as pd

# 頻度をS(秒)として5期間のDatetimeIndexを作成
# タイムゾーンはAustralia/Adelaide
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='40S')

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

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

# 秒の値を取得
res = datetimeindex.second

# 秒のみを表示
print("\nThe seconds from DateTimeIndex...\n", res)

# 秒単位の頻度でフロア操作を実行
# 秒単位の場合は'S'を指定
print("\nPerforming floor operation with seconds frequency...\n",
datetimeindex.floor(freq='S'))

出力結果

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

DateTimeIndex...
DatetimeIndex(['2021-10-18 07:20:32.261811624+10:30',
'2021-10-18 07:21:12.261811624+10:30',
'2021-10-18 07:21:52.261811624+10:30',
'2021-10-18 07:22:32.261811624+10:30',
'2021-10-18 07:23:12.261811624+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='40S')
DateTimeIndex frequency...
<40 * Seconds>

The seconds from DateTimeIndex...
Int64Index([32, 12, 52, 32, 12], dtype='int64')

Performing floor operation with seconds frequency...
DatetimeIndex(['2021-10-18 07:20:32+10:30', '2021-10-18 07:21:12+10:30',
'2021-10-18 07:21:52+10:30', '2021-10-18 07:22:32+10:30',
'2021-10-18 07:23:12+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)

解説

出力結果を見ると、元のDateTimeIndexはナノ秒単位の精度を持っていますが、floor(freq='S')を実行することで、各タイムスタンプが秒単位に切り下げられていることがわかります。例えば「07:20:32.261811624」は「07:20:32」に丸められています。

なお、floor()メソッドは常に過去方向(直近の秒)へ切り下げる点が特徴です。四捨五入を行いたい場合はround()メソッドを、将来方向への切り上げを行いたい場合はceil()メソッドを使用してください。

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

    pandasでDateTimeIndex(日時インデックス)を分単位の頻度で丸めるには、DateTimeIndex.round()メソッドを使用します。分単位の頻度を指定したい場合は、freq引数にTを設定します。なお、Tは「min(minutes)」のエイリアスであり、どちらを指定しても同じ結果が得られます。手順1:ライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pd手順2:DateTimeIndexの作成次に、期間5・頻度45秒(45s)のDatetimeIndexを作成します。タイムゾーンにはオーストラリアのアデレード(Australia

  2. 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, per