jueves, 25 de diciembre de 2025

Enmascaramiento Boleano en Python para ciencia de datos

DataFrame: un DataFrame es una estructura de datos tabulares bidimensional, de tamaño variable y potencialmente heterogénea con ejes etiquetados (filas y columnas) en pandas.

Operadores lógicos: Pandas utiliza operadores lógicos como & (y), |(o) y ~ (no) para crear declaraciones de selección complejas para filtrar datos en función de múltiples condiciones.

Enmascaramiento booleano: el enmascaramiento booleano, o indexación booleana, es un método utilizado en pandas para filtrar datos aplicando una cuadrícula booleana sobre el índice de un DataFrame, seleccionando solo los valores que corresponden a Verdadero.

Ahora que ya sabes cómo seleccionar datos en pandas haciendo referencia a filas y columnas, el siguiente paso es aprender a usar máscaras booleanas. Los profesionales de los datos utilizan máscaras booleanas para seleccionar datos en pandas basándose en condiciones. En esta lectura, descubrirá el enmascaramiento booleano y cómo utilizar los operadores lógicos de pandas para formar sentencias de selección multi-condicionales. Entender los fundamentos de Pandas le ayudará a hacer su trabajo como profesional de datos más fácil y eficiente.

Máscaras booleanas

Ya sabes que Boolean se utiliza para describir cualquier variable binaria cuyos posibles valores son verdadero o falso. Con pandas, el enmascaramiento booleano, también llamado indexación booleana, se utiliza para superponer una rejilla booleana sobre el índice de un marco de datos con el fin de seleccionar sólo los valores del marco de datos que se alinean con los valores True de la rejilla.

Vuelva al ejemplo del vídeo. Suponga que tiene un marco de datos de planetas, sus radios y su número de lunas:

planeta

radio_km

lunas

Mercurio

2,440

0

Venus

6,052

0

Tierra

6,371

1

Marte

3,390

2

Júpiter

69,911

80

Saturno

58,232

83

Urano

25,362

27

Neptuno

24,622

14

Supongamos ahora que queremos quedarnos con las filas de los planetas que tienen menos de 20 lunas y filtrar el resto. Una máscara booleana es un objeto pandas Series que indica si esta condición es verdadera o falsa para cada valor de la columna moons:

¿Lunas < 20?

0

True

1

True

2

True

3

True

4

False

5

False

6

False

7

True

El dtype contenido en esta serie es bool. El enmascaramiento booleano superpone efectivamente esta serie booleana al índice del marco de datos. El resultado es que todas las filas del marco de datos indicadas como False en la máscara booleana se filtran, y todas las filas indicadas como True permanecen en el marco de datos:

planeta

radio_km

lunas

Mercurio

2,440

0

Venus

6,052

0

Tierra

6,371

1

Marte

3,390

2

Neptuno

24,622

14

Codificación de máscaras booleanas en pandas

A continuación se muestra cómo realizar esta operación en pandas.

Comience con un objeto DataFrame.

>>data = {'planet': ['Mercury''Venus''Earth''Mars',
>>                   'Jupiter''Saturn''Uranus''Neptune'],
>>       'radius_km': [24406052637133906991158232,
>>                     2536224622],
>>       'moons': [001280832714]
>>        }
>>df = pd.DataFrame(data)
>>df

>>>
moons planet radius_km 0 0 Mercury 2440 1 0 Venus 6052 2 1 Earth 6371 3 2 Mars 3390 4 80 Jupiter 69911 5 83 Saturn 58232 6 27 Uranus 25362 7 14 Neptune 24622

A continuación, escribe una sentencia lógica. Recuerda, el objetivo es mantener los
planetas que tienen menos de 20 lunas y filtrar el resto.

>>print(df['moons'] < 20)

>>>
0 True 1 True 2 True 3 True 4 False 5 False 6 False 7 True Name: moons, dtype: bool

Esto resulta en un objeto Series de dtype: bool que consiste en los índices
de las filas, donde cada índice contiene un valor True o False dependiendo
de si esa fila satisface la condición dada. Esta es la máscara booleana.
Para aplicar esta máscara al marco de datos, basta con insertar esta
sentencia entre paréntesis de selección y aplicarla al marco de datos:

>>print(df[df['moons'] < 20])

>>>
moons planet radius_km 0 0 Mercury 2440 1 0 Venus 6052 2 1 Earth 6371 3 2 Mars 3390 7 14 Neptune 24622

También puede asignar la máscara booleana a una variable con nombre y aplicarla al marco de datos:
>>mask = df['moons'] < 20
>>df[mask]

>>>
moons planet radius_km 0 0 Mercury 2440 1 0 Venus 6052 2 1 Earth 6371 3 2 Mars 3390 7 14 Neptune 24622

Tenga en cuenta que esto no modifica permanentemente su marco de datos. Sólo proporciona una vista filtrada del mismo.

>>df
>>>
moons planet radius_km 0 0 Mercury 2440 1 0 Venus 6052 2 1 Earth 6371 3 2 Mars 3390 4 80 Jupiter 69911 5 83 Saturn 58232 6 27 Uranus 25362 7 14 Neptune 24622

Sin embargo, puede asignar el resultado a una variable con nombre:

>>mask = df['moons'] < 20
>>df2 = df[mask]
>>df2

>>>
moons planet radius_km 0 0 Mercury 2440 1 0 Venus 6052 2 1 Earth 6371 3 2 Mars 3390 7 14 Neptune 24622

Y si desea seleccionar sólo la columna planet como un objeto Series, puede utilizar herramientas de selección normales como loc[]:

>>mask = df['moons'] < 20
>>df.loc[mask, 'planet']

>>>
0 Mercury 1 Venus 2 Earth 3 Mars 7 Neptune Name: planet, dtype: object



Sentencias lógicas complejas

En las sentencias que utilizan múltiples condiciones, Pandas utiliza operadores lógicos para indicar qué datos mantener y cuáles filtrar. Estos operadores son:

Operador

Lógico

&

and

|

or

~

not

Importante: Cada componente de una sentencia lógica multi-condicional debe estar entre paréntesis. De lo contrario, la sentencia arrojará un error o, peor aún, devolverá algo que no es lo que usted pretendía.

Por ejemplo, aquí se muestra cómo crear una máscara booleana que seleccione todos los planetas que tengan menos de 10 lunas o más de 50 lunas:

>>mask = (df['moons'] < 10) | (df['moons'] > 50)

>>mask

>>>
0 True 1 True 2 True 3 True 4 True 5 True 6 False 7 False Name: moons, dtype: bool

Observe que cada condición está contenida en un conjunto de paréntesis y que las dos condiciones están separadas por el operador lógico |(o). Para aplicar la máscara, llame al marco de datos y ponga la condición o la variable a la que está asignada entre paréntesis de selección:

>>mask = (df['moons'] < 10) | (df['moons'] > 50)
>>df[mask]

>>>
moons planet radius_km 0 0 Mercury 2440 1 0 Venus 6052 2 1 Earth 6371 3 2 Mars 3390 4 80 Jupiter 69911 5 83 Saturn 58232

He aquí un ejemplo de cómo seleccionar todos los planetas que tienen más de 20 lunas, pero no los planetas con 80 lunas ni los planetas con un radio inferior a 50.000 km:

>>mask = (df['moons'] > 20) & ~(df['moons'] == 80) & ~(df['radius_km'] < 50000)
>>df[mask]

>>>
moons planet radius_km 5 83 Saturn 58232

Observe que esto devuelve el mismo resultado que lo siguiente:

>>mask = (df['moons'] > 20) & (df['moons'] != 80) & (df['radius_km'] >= 50000)
>>df[mask]

>>>
moons planet radius_km 5 83 Saturn 58232

Trabajar con dataframes de pandas, utilizar sus atributos y métodos, y seleccionar datos utilizando máscaras booleanas son algunas de las actividades diarias fundamentales de un profesional de los datos. Pronto utilizarás estas herramientas con frecuencia a medida que avances en tu viaje con pandas.

Puntos clave

Una máscara booleana es un método para aplicar un filtro a un marco de datos. La máscara superpone una rejilla booleana sobre su dataframe con el fin de seleccionar sólo los valores en el dataframe que se alinean con los valores True de la rejilla. Para crear comparaciones booleanas, Pandas tiene sus propios operadores lógicos. Estos operadores son:

  • & (and)

  • | (or)

  • ~ (no)

Cada criterio de una sentencia de selección multi-condicional debe ir encerrado en su propio conjunto de paréntesis. Con práctica, hacer sentencias de selección complejas en Pandas es posible y eficiente.

Recursos para más información

No hay comentarios.:

Publicar un comentario

Entradas recientes

Enmascaramiento Boleano en Python para ciencia de datos

DataFrame: un DataFrame es una estructura de datos tabulares bidimensional, de tamaño variable y potencialmente heterogénea con ejes etique...

Entradas Populares