Введение
В этом практическом занятии мы изучим тип данных Nullable Boolean, предоставляемый библиотекой Pandas в Python. Мы узнаем, как использовать эту функцию при индексировании и логических операциях, и в чем она отличается от традиционных булевых операций из-за наличия значений 'NA'.
Советы по использованию ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к 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
Резюме
В этом практическом занятии мы узнали о типе данных Nullable Boolean в Pandas и о реализации логики Клини для обработки значений NA в логических операциях. Эта функция обеспечивает более интуитивный способ обработки пропущенных данных в булевых операциях и отличается от поведения np.nan в этих операциях.