Pandas es una poderosa biblioteca de Python para la manipulación y el análisis de datos. Filtrar filas de un DataFrame basándose en los valores de una columna es una tarea fundamental en el procesamiento de datos. Este artículo explora varias técnicas para filtrar DataFrames de Pandas de manera eficiente, cubriendo escenarios simples y complejos.
Tabla de contenido
- Filtrado básico: Una sola columna, una sola condición
- Negación: Selección de filas que no coinciden con una condición
- Comparaciones numéricas: Mayor que, menor que, etc.
- Combinación de condiciones: Operaciones AND y OR
- Filtrado avanzado: Múltiples columnas y lógica compleja
- Filtrado eficiente con
isin()
Filtrado básico: Una sola columna, una sola condición
La forma más simple de filtrado implica seleccionar filas donde una columna específica coincide con un valor particular. Esto se logra utilizando indexación booleana.
import pandas as pd
# DataFrame de ejemplo
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 22, 28],
'City': ['Nueva York', 'Londres', 'París', 'Tokio']}
df = pd.DataFrame(data)
# Seleccionar filas donde City es 'Londres'
residentes_londres = df[df['City'] == 'Londres']
print(residentes_londres)
Este código crea una máscara booleana (df['City'] == 'Londres'
) que es True
donde la columna ‘City’ es ‘Londres’ y False
en caso contrario. Esta máscara se utiliza luego para indexar el DataFrame, seleccionando solo las filas donde la máscara es True
.
Negación: Selección de filas que no coinciden con una condición
Para seleccionar filas donde una columna no contiene un valor específico, niegue la condición booleana usando el operador !=
.
# Seleccionar filas donde City NO es 'Londres'
no_residentes_londres = df[df['City'] != 'Londres']
print(no_residentes_londres)
Comparaciones numéricas: Mayor que, menor que, etc.
Para columnas numéricas, use operadores de comparación (>
, <
, >=
, <=
) para filtrar según rangos de valores.
# Seleccionar filas donde Age es mayor que 25
mayores_25 = df[df['Age'] > 25]
print(mayores_25)
# Seleccionar filas donde Age es menor o igual a 25
menores_o_iguales_25 = df[df['Age'] <= 25]
print(menores_o_iguales_25)
Combinación de condiciones: Operaciones AND y OR
Filtre en base a múltiples valores de columna combinando condiciones booleanas con operadores lógicos &
(AND) y |
(OR). Encierre cada condición entre paréntesis.
# Seleccionar filas donde City es 'Londres' AND Age es mayor que 25
londres_y_mayores = df[(df['City'] == 'Londres') & (df['Age'] > 25)]
print(londres_y_mayores)
# Seleccionar filas donde City es 'Londres' OR Age es mayor que 25
londres_o_mayores = df[(df['City'] == 'Londres') | (df['Age'] > 25)]
print(londres_o_mayores)
Filtrado avanzado: Múltiples columnas y lógica compleja
Para escenarios complejos, el método query()
ofrece una mejor legibilidad.
# Usando query() para una mejor legibilidad
filtro_complejo = df.query('(City == "Londres" and Age > 25) or (Age < 23)')
print(filtro_complejo)
Filtrado eficiente con isin()
El método isin()
proporciona una forma concisa de verificar si los valores están contenidos dentro de una lista.
ciudades_a_incluir = ['Londres', 'París']
df_filtrado = df[df['City'].isin(ciudades_a_incluir)]
print(df_filtrado)
Este artículo demostró varias técnicas para filtrar DataFrames en Pandas. La elección del método correcto depende de la complejidad de sus criterios de filtrado. Recuerde usar paréntesis correctamente con operadores lógicos para asegurar resultados precisos.