Pandasの進化に追いつけ追い越せ!DatetimeTZDtype型と「is_datetime64tz_dtype」関数で最新の時系列データ分析を制覇


pandas.api.types.is_datetime64tz_dtype 関数は、与えられたデータ型が DatetimeTZDtype 型かどうかを判断します。

引数

  • arr_or_dtype: データ型またはデータ型を含む配列型

戻り値

  • bool: データ型が DatetimeTZDtype 型かどうかを示す真偽値

詳細

DatetimeTZDtype 型は、時系列データを格納するために使用されるデータ型です。このデータ型は、時刻情報に加えて、時差情報も保持することができます。

is_datetime64tz_dtype 関数は、データ型が DatetimeTZDtype 型かどうかを判断する際に役立ちます。例えば、以下のコードは、Series オブジェクトのデータ型が DatetimeTZDtype 型かどうかを判断します。

import pandas as pd

s = pd.Series([pd.Timestamp('2020-01-01 00:00:00', tz='Asia/Tokyo')])
print(pd.api.types.is_datetime64tz_dtype(s))

このコードは、True を出力します。これは、s オブジェクトのデータ型が DatetimeTZDtype 型だからです。

注意点

pandas バージョン 2.1.0 以降では、is_datetime64tz_dtype 関数は非推奨になっています。代わりに、isinstance(dtype, pd.DatetimeTZDtype) を使用することを推奨しています。

以下のコードは、is_datetime64tz_dtype 関数の使用方法を示しています。

import pandas as pd

# データ型
dtype = pd.DatetimeTZDtype('ns', tz='Asia/Tokyo')

# 配列型
arr = pd.Series([], dtype=dtype)

# 判断
print(pd.api.types.is_datetime64tz_dtype(dtype))  # True
print(pd.api.types.is_datetime64tz_dtype(arr))   # True


例 1:データ型を判断する

import pandas as pd

# データ型
dtype = pd.DatetimeTZDtype('ns', tz='Asia/Tokyo')

# 判断
print(pd.api.types.is_datetime64tz_dtype(dtype))  # True

このコードは、dtypeDatetimeTZDtype 型であることを判断します。

例 2:Series オブジェクトのデータ型を判断する

import pandas as pd

# データ
data = [pd.Timestamp('2020-01-01 00:00:00', tz='Asia/Tokyo'),
        pd.Timestamp('2020-01-02 00:00:00', tz='Asia/Tokyo')]

# Series オブジェクトの作成
s = pd.Series(data)

# 判断
print(pd.api.types.is_datetime64tz_dtype(s))  # True

このコードは、s オブジェクトのデータ型が DatetimeTZDtype 型であることを判断します。

例 3:DataFrame オブジェクトの列のデータ型を判断する

import pandas as pd

# データ
data = {'date': [pd.Timestamp('2020-01-01 00:00:00', tz='Asia/Tokyo'),
                 pd.Timestamp('2020-01-02 00:00:00', tz='Asia/Tokyo')]}

# DataFrame オブジェクトの作成
df = pd.DataFrame(data)

# 判断
print(pd.api.types.is_datetime64tz_dtype(df['date']))  # True

このコードは、df['date'] 列のデータ型が DatetimeTZDtype 型であることを判断します。

import pandas as pd

# データ型
dtype = pd.DatetimeTZDtype('ns', tz='Asia/Tokyo')

# 判断
print(isinstance(dtype, pd.DatetimeTZDtype))  # True


以下、それぞれの方法について詳しく説明します。

isinstance 関数を使用する

import pandas as pd

dtype = pd.DatetimeTZDtype('ns', tz='Asia/Tokyo')
print(isinstance(dtype, pd.DatetimeTZDtype))  # True

pd.api.types.is_datetime64tz_dtype 関数を使用する(非推奨)

import pandas as pd

dtype = pd.DatetimeTZDtype('ns', tz='Asia/Tokyo')
print(pd.api.types.is_datetime64tz_dtype(dtype))  # True

このコードは、dtypeDatetimeTZDtype 型かどうかを判断します。

どちらの方法を使うべきか

一般的には、isinstance 関数を使用することを推奨します。これは、より汎用性が高く、将来のバージョンでも互換性が保たれやすいからです。

  • 複数のデータ型を同時に判定したい場合は、isinstance 関数の方が効率的に処理できます。
  • pandas バージョン 2.0.0 以前では、isinstance 関数を使用しても正しく判定されない場合があります。この場合は、pd.api.types.is_datetime64tz_dtype 関数を使用する必要があります。