Introdução
Neste laboratório, exploraremos o tipo de dado Booleano Nulo (Nullable Boolean), fornecido pela biblioteca Pandas em Python. Aprenderemos como usar este recurso em indexação e operações lógicas, e como ele difere das operações booleanas tradicionais devido à presença de valores 'NA'.
Dicas para a VM
Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.
Importando as Bibliotecas Necessárias
Primeiramente, precisamos importar as bibliotecas necessárias para realizar as operações.
## Importando as bibliotecas pandas e numpy
import pandas as pd
import numpy as np
Indexação com valores NA
O Pandas permite a indexação com valores NA em um array booleano, que são tratados como False.
## Criando uma Series do pandas
s = pd.Series([1, 2, 3])
## Criando um array booleano com valores NA
mask = pd.array([True, False, pd.NA], dtype="boolean")
## Indexando a série com o array booleano
s[mask] ## Valores NA são tratados como False
Se você deseja manter os valores NA, você pode preenchê-los manualmente com fillna(True).
## Preenchendo valores NA com True e indexando a série
s[mask.fillna(True)]
Operações lógicas de Kleene
O Pandas implementa a Lógica de Kleene (lógica de três valores) para operações lógicas como & (and - E), | (or - OU) e ^ (exclusive-or - OU exclusivo). Isso difere de como np.nan se comporta em operações lógicas.
## Demonstrando a diferença nas operações 'or' entre np.nan e NA
pd.Series([True, False, np.nan], dtype="object") | True ## np.nan se comporta de forma diferente
pd.Series([True, False, pd.NA], dtype="boolean") | True ## NA segue a lógica de Kleene
## Demonstrando a diferença nas operações 'and' entre np.nan e NA
pd.Series([True, False, np.nan], dtype="object") & True ## np.nan se comporta de forma diferente
pd.Series([True, False, pd.NA], dtype="boolean") & True ## NA segue a lógica de Kleene
Resumo
Neste laboratório, aprendemos sobre o tipo de dado Booleano Nulo (Nullable Boolean) no Pandas e sua implementação da lógica de Kleene para lidar com valores NA em operações lógicas. Essa funcionalidade oferece uma maneira mais intuitiva de lidar com dados ausentes em operações booleanas, e difere de como np.nan se comporta nessas operações.