"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo filtrar de forma eficiente los objetos de datos de Pandas mediante la indexación booleana?

¿Cómo filtrar de forma eficiente los objetos de datos de Pandas mediante la indexación booleana?

Publicado el 2024-11-01
Navegar:853

How to Efficiently Filter Pandas Data Objects Using Boolean Indexing?

Filtrado eficiente de series y marcos de datos de Pandas mediante indexación booleana

En escenarios de análisis de datos, aplicar múltiples filtros para limitar los resultados suele ser crucial. Este artículo tiene como objetivo abordar un enfoque eficiente para encadenar múltiples operaciones de comparación en objetos de datos de Pandas.

El desafío

El objetivo es procesar un diccionario de operadores relacionales y aplicarlos de forma aditiva a un Pandas determinado. Serie o DataFrame, lo que da como resultado un conjunto de datos filtrado. Esta operación requiere minimizar la copia innecesaria de datos, especialmente cuando se trata de conjuntos de datos grandes.

Solución: indexación booleana

Pandas proporciona un mecanismo altamente eficiente para filtrar datos mediante indexación booleana. La indexación booleana implica crear condiciones lógicas y luego indexar los datos utilizando estas condiciones. Considere el siguiente ejemplo:

df.loc[df['col1'] >= 1, 'col1']

Esta línea de código selecciona todas las filas en el DataFrame df donde el valor en la columna 'col1' es mayor o igual a 1. El resultado es un nuevo objeto Serie que contiene los valores filtrados.

Para aplicar múltiples filtros, podemos combinar condiciones booleanas usando operadores lógicos como & (y) y | (o). Por ejemplo:

df[(df['col1'] >= 1) & (df['col1'] <= 1)]

Esta operación filtra las filas donde 'col1' es mayor o igual a 1 y menor o igual a 1.

Funciones auxiliares

Para simplificar el proceso de aplicación de múltiples filtros, podemos crear funciones auxiliares:

def b(x, col, op, n): 
    return op(x[col], n)

def f(x, *b):
    return x[(np.logical_and(*b))]

La función b crea una condición booleana para una columna y operador determinados, mientras que f aplica múltiples condiciones booleanas a un DataFrame o Serie.

Ejemplo de uso

Para usar estas funciones, podemos proporcionar un diccionario de criterios de filtro:

filters = {'>=': [1], '
b1 = b(df, 'col1', ge, 1)
b2 = b(df, 'col1', le, 1)
filtered_df = f(df, b1, b2)

Este código aplica los filtros a la columna 'col1' en el DataFrame df y devuelve un nuevo DataFrame con los resultados filtrados.

Funcionalidad mejorada

Pandas 0.13 introdujo el método de consulta, que ofrece una manera conveniente de aplicar filtros usando expresiones de cadena. Para identificadores de columna válidos, el siguiente código es posible:

df.query('col1 

Esta línea logra el mismo filtrado que nuestro ejemplo anterior que utiliza una sintaxis más concisa.

Al utilizar indexación booleana y funciones auxiliares, podemos aplicar de manera eficiente múltiples filtros a las series y marcos de datos de Pandas. Este enfoque minimiza la copia de datos y mejora el rendimiento, especialmente cuando se trabaja con grandes conjuntos de datos.

Declaración de liberación Este artículo se reimprime en: 1729395079 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3