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

PandasでBusinessDayオフセットが正規化されているかどうかを確認する方法

Pandasでは、BusinessDay.normalize プロパティを使用することで、BusinessDayオフセットが正規化(normalize)されているかどうかを簡単に確認できます。

この記事では、実際のコード例とともに、その確認手順をわかりやすく解説します。

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

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

import datetime
import pandas as pd

タイムスタンプの設定

次に、Pandasでタイムスタンプオブジェクトを設定します。

timestamp = pd.Timestamp('2021-10-30 01:55:02.000045')

BusinessDayオフセットの作成

BusinessDayはDateOffsetクラスのサブクラスです。ここでは、normalize パラメータを True に設定して、正規化されたBusinessDayオフセットを作成します。

bdOffset = pd.tseries.offsets.BusinessDay(offset = datetime.timedelta(hours = 8, minutes = 10), normalize=True)

更新されたタイムスタンプの表示

BusinessDayオフセットを適用した後のタイムスタンプを表示します。

print("\nUpdated Timestamp...\n", timestamp + bdOffset)

正規化されているかどうかの確認

BusinessDayオフセットが正規化されているかどうかは、以下のように bdOffset.normalize を参照することで確認できます。

print("\nThe BusinessDay Offset is normalized..\n", bdOffset.normalize)

完全なコード例

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

import datetime
import pandas as pd

# Pandasでタイムスタンプオブジェクトを設定
timestamp = pd.Timestamp('2021-10-30 01:55:02.000045')

# タイムスタンプの表示
print("Timestamp...\n", timestamp)

# BusinessDayオフセットの作成
# BusinessDayはDateOffsetのサブクラス
# normalizeパラメータを使って正規化
bdOffset = pd.tseries.offsets.BusinessDay(offset = datetime.timedelta(hours = 8, minutes = 10), normalize=True)

# BusinessDayオフセットの表示
print("\nBusinessDay Offset...\n", bdOffset)

# 更新されたタイムスタンプの表示
print("\nUpdated Timestamp...\n", timestamp + bdOffset)

# 適用されている頻度を文字列として返す
print("\nFrequency on the given BusinessDay Offset...\n", bdOffset.freqstr)

# 頻度の名前を返す
print("\nThe name of the frequency on the BusinessDay object..\n", bdOffset.name)

# BusinessDayオフセットが正規化されているかどうかを確認
print("\nThe BusinessDay Offset is normalized..\n", bdOffset.normalize)

実行結果

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

Timestamp...
 2021-10-30 01:55:02.000045

BusinessDay Offset...
 <BusinessDay: offset=datetime.timedelta(seconds=29400)>

Updated Timestamp...
 2021-11-01 00:00:00

Frequency on the given BusinessDay Offset...
 B+8H10Min

The name of the frequency on the BusinessDay object..
 B

The BusinessDay Offset is normalized..
 True

ポイントの解説

出力結果から、以下のことが読み取れます。

  • normalize=True を指定しているため、bdOffset.normalize の結果は True になっています。
  • タイムスタンプ「2021-10-30 01:55:02.000045」にオフセットを適用すると、「2021-11-01 00:00:00」に正規化されています。時刻部分が真夜中の0時にリセットされているのがわかります。
  • 2021年10月30日は土曜日のため、翌営業日である11月1日(月曜日)に移動しています。

このように、normalize パラメータを有効にすると、オフセット適用後に時刻が午前0時に丸められます。営業日ベースの日付計算を行う際に非常に便利な機能です。

  1. Pythonで指定した基数表現に0が連続して含まれるかどうかを判定する方法

    プログラミングでは、ある数値を特定の基数(進法)で表したとき、その桁並びの中に「0」が連続して現れるかどうかを調べたいことがあります。本記事では、Pythonを使ってこの判定を行う方法を解説します。 実装の流れとしては、数値と基数を引数として受け取る関数を定義し、その内部で別の補助関数を呼び出すことで、条件を満たすかどうかに応じて「Yes」または「No」を出力します。 サンプルコード 0): res = False continue res = True return True N, K = 8, 2 print(Do

  2. Pythonで与えられた数値がユークリッド数(Euclid Number)かどうかを判定する方法

    ユークリッド数とは? ある整数 n が与えられたとき、それがユークリッド数であるかどうかを判定することを考えます。ユークリッド数とは、次の式で表すことができる整数のことです。 n = Pn + 1 ここで Pn は「最初の n 個の素数の積」を意味します。 例として、入力が n = 211 の場合を考えてみましょう。211 は次のように表せるため、出力は True になります。 211 = (2 × 3 × 5 × 7) + 1 解決のためのアプローチ この問題は、以下の手順で解くことができます。 上限値 MAX を 10000 に設定し、空の素数リスト primes を用意します。 関数