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 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.
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.
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.
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.
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