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

Python Pandas入門:秒単位の頻度でDateTimeIndexにceil操作を実行する方法

はじめに

PandasのDateTimeIndex.ceil()メソッドを使用すると、DateTimeIndexの日時データを指定した頻度単位で切り上げることができます。本記事では、秒単位の頻度でceil操作を実行する方法を解説します。

秒単位の頻度を指定するには、freqパラメータに'S'を設定します。ceil操作では、ナノ秒などの端数が切り上げられ、最も近い秒に丸められた日時が得られます。

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

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

import pandas as pd

DatetimeIndexの作成

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

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

DatetimeIndexの表示

作成したDateTimeIndexを表示して確認します。

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

秒単位の頻度でceil操作を実行

DateTimeIndexに対して、秒単位の頻度でceil操作を実行します。秒単位の場合はfreqパラメータに'S'を指定します。

print("\n秒単位の頻度でceil操作を実行...\n",
datetimeindex.ceil(freq='S'))

完全なコード例

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

import pandas as pd

# 期間5、頻度S(秒)の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("\nDateTimeIndexから取得した秒...\n", res)

# 秒単位の頻度でDateTimeIndexにceil操作を実行
# 秒単位の場合は'S'を指定
print("\n秒単位の頻度でceil操作を実行...\n",
datetimeindex.ceil(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>

DateTimeIndexから取得した秒...
Int64Index([32, 12, 52, 32, 12], dtype='int64')

秒単位の頻度でceil操作を実行...
DatetimeIndex(['2021-10-18 07:20:33+10:30', '2021-10-18 07:21:13+10:30',
'2021-10-18 07:21:53+10:30', '2021-10-18 07:22:33+10:30',
'2021-10-18 07:23:13+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)

解説

出力結果を見ると、元のDateTimeIndexにはナノ秒単位の小数部分(.261811624)が含まれていますが、ceil(freq='S')を実行することで、各日時が最も近い「次の秒」に切り上げられていることがわかります。例えば、「07:20:32.261811624」は「07:20:33」に変換されています。

なお、ceil操作後のDatetimeIndexではfreq属性がNoneになっている点にも注意してください。これは、切り上げ処理によって元の等間隔の頻度情報が保持されなくなるためです。

同様の操作として、切り捨てを行うfloor()メソッドや四捨五入を行うround()メソッドも用意されており、用途に応じて使い分けることができます。

  1. 【Python・Pandas】DateTimeIndexを秒の頻度で丸める方法

    DateTimeIndexを秒の頻度で丸める方法PandasのDateTimeIndexを秒(seconds)の頻度で丸めるには、DateTimeIndex.round()メソッドを使用します。秒単位で丸めたい場合は、freqパラメータにSを指定します。round()メソッドは、ナノ秒などの細かい端数を指定した頻度のもっとも近い値へ四捨五入する際に便利です。まず、必要なライブラリをインポートします。import pandas as pd次に、期間5つ分・頻度が「28s」(28秒間隔)のDatetimeIndexを作成します。タイムゾーンはオーストラリア/アデレード(Australia/Adel

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

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