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時に丸められます。営業日ベースの日付計算を行う際に非常に便利な機能です。
-
Pythonで指定した基数表現に0が連続して含まれるかどうかを判定する方法
プログラミングでは、ある数値を特定の基数(進法)で表したとき、その桁並びの中に「0」が連続して現れるかどうかを調べたいことがあります。本記事では、Pythonを使ってこの判定を行う方法を解説します。 実装の流れとしては、数値と基数を引数として受け取る関数を定義し、その内部で別の補助関数を呼び出すことで、条件を満たすかどうかに応じて「Yes」または「No」を出力します。 サンプルコード 0): res = False continue res = True return True N, K = 8, 2 print(Do
-
Pythonで与えられた数値がユークリッド数(Euclid Number)かどうかを判定する方法
ユークリッド数とは? ある整数 n が与えられたとき、それがユークリッド数であるかどうかを判定することを考えます。ユークリッド数とは、次の式で表すことができる整数のことです。 n = Pn + 1 ここで Pn は「最初の n 個の素数の積」を意味します。 例として、入力が n = 211 の場合を考えてみましょう。211 は次のように表せるため、出力は True になります。 211 = (2 × 3 × 5 × 7) + 1 解決のためのアプローチ この問題は、以下の手順で解くことができます。 上限値 MAX を 10000 に設定し、空の素数リスト primes を用意します。 関数