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

Python・PandasでCustomBusinessDayオフセットが正規化されているか確認する方法

PandasでCustomBusinessDay(カスタム営業日)オフセットが正規化されているかどうかを確認するには、CustomBusinessDay.normalizeプロパティを使用します。
本記事では、実際のコード例とともに、その確認手順をわかりやすく解説します。

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

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

import pandas as pd

タイムスタンプオブジェクトの設定

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

timestamp = pd.Timestamp('2021-10-22 03:10:35')

CustomBusinessDayオフセットの作成

CustomBusinessDayは、DateOffsetのサブクラスであり、祝日などを除外したカスタム営業日を表します。有効な営業日はweekmaskパラメータで指定できます。
ここでは、「normalize」パラメータをTrueに設定することで、CustomBusinessDayを正規化しています。

cbdOffset = pd.tseries.offsets.CustomBusinessDay(n=2, weekmask='Mon Tue Wed Fri', normalize=True)

オフセットを適用したタイムスタンプの表示

作成したオフセットをタイムスタンプに加算し、更新後のタイムスタンプを表示します。

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

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

CustomBusinessDayオフセットが正規化されているかどうかは、normalizeプロパティを参照することで確認できます。

print("\nThe CustomBusinessDay Offset is normalized ?\n", cbdOffset.normalize)

サンプルコード(全体)

以下に、これまでの手順をすべて含んだ完全なコードを示します。

import pandas as pd

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

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

# CustomBusinessDayオフセットの作成
# CustomBusinessDayは、祝日などを除外したカスタム営業日を表すDateOffsetのサブクラスです
# 有効な営業日はweekmaskで指定します
# 「normalize」パラメータを使ってCustomBusinessDayを正規化しています
cbdOffset = pd.tseries.offsets.CustomBusinessDay(n=2, weekmask='Mon Tue Wed Fri', normalize=True)

# CustomBusinessDayオフセットの表示
print("\nCustomBusinessDay Offset...\n", cbdOffset)

# オフセットをタイムスタンプに加算し、更新後のタイムスタンプを表示
print("\nUpdated Timestamp...\n", timestamp + cbdOffset)

# オフセットオブジェクトに適用されている頻度を文字列として返す
print("\nFrequency applied on the given CustomBusinessDay Offset object...\n", cbdOffset.freqstr)

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

実行結果

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

Timestamp...
 2021-10-22 03:10:35

CustomBusinessDay Offset...
 <2 * CustomBusinessDays>

Updated Timestamp...
 2021-10-26 00:00:00

Frequency applied on the given CustomBusinessDay Offset object...
 2C

The CustomBusinessDay Offset is normalized ?
 True

出力のポイント

元のタイムスタンプ「2021-10-22 03:10:35」(金曜日)に2営業日分のオフセットを加算しています。weekmaskで木曜日が除外されているため、翌営業日は月曜日(10月25日)、その次は火曜日(10月26日)となります。
また、normalize=Trueが設定されているため、結果の時刻部分が「00:00:00」に切り捨てられている点にも注目してください。
最後に、cbdOffset.normalizeの出力がTrueとなっており、このオフセットが正規化されていることが確認できました。

  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 を用意します。 関数