Nullable Boolean データの操作

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、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の振る舞いとは異なります。