はじめに
この実験では、Python の Pandas ライブラリによって提供される Nullable Boolean データ型を調べます。この機能をインデックス付けや論理演算でどのように使用するか、および「NA」値の存在により従来のブール演算とどのように異なるかを学びます。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリのインポート
まず、操作を実行するために必要なライブラリをインポートする必要があります。
## Importing the pandas and numpy libraries
import pandas as pd
import numpy as np
NA 値を使ったインデックス付け
Pandas は、ブール配列でNA値を使ったインデックス付けを許可しており、これらはFalseとして扱われます。
## Creating a pandas Series
s = pd.Series([1, 2, 3])
## Creating a boolean array with NA values
mask = pd.array([True, False, pd.NA], dtype="boolean")
## Indexing the series with the boolean array
s[mask] ## NA values are treated as False
NA値を維持したい場合は、fillna(True)で手動で埋めることができます。
## Filling NA values with True and indexing the series
s[mask.fillna(True)]
クリーネの論理演算
Pandas は、&(論理積)、|(論理和)、^(排他的論理和)のような論理演算に対してクリーネ論理(三値論理)を実装しています。これは、論理演算におけるnp.nanの振る舞いとは異なります。
## Demonstrating the difference in 'or' operations between np.nan and NA
pd.Series([True, False, np.nan], dtype="object") | True ## np.nan behaves differently
pd.Series([True, False, pd.NA], dtype="boolean") | True ## NA follows Kleene logic
## Demonstrating the difference in 'and' operations between np.nan and NA
pd.Series([True, False, np.nan], dtype="object") & True ## np.nan behaves differently
pd.Series([True, False, pd.NA], dtype="boolean") & True ## NA follows Kleene logic
まとめ
この実験では、Pandas の Nullable Boolean データ型と、論理演算におけるNA値の処理に対するクリーネ論理の実装について学びました。この機能は、ブール演算における欠損データの処理をより直感的な方法で提供し、これらの演算におけるnp.nanの振る舞いとは異なります。