Filtro de pandas por múltiples condiciones

Filtro de pandas por múltiples condiciones

La manipulación de datos de datos más popular en los pandas es filtrarse. En esta publicación, veremos cómo usar varias condiciones para filtrar un marco de datos de pandas. En los pandas, existen múltiples métodos para extraer datos del marco de datos utilizando múltiples condiciones. En los siguientes ejemplos, demostraremos cómo usar diferentes funciones para filtrar DataFrame utilizando múltiples condiciones.

Método 1: Uso de eval ()

eval () se usa para evaluar una expresión. Por lo tanto, actuará como un filtro en el marco de datos y devolverá las filas que coinciden con la condición.

Sintaxis

pandas.DataFrame_Object [dataFrame_Object.eval ("condiciones")]

Ejemplo 1

Creemos un marco de datos con 6 columnas y 4 filas y devolvamos las filas en función de la columna de tarifas donde la ID es mayor de 20, y el nombre termina con "n".

importación de pandas
importar numpy
Observaciones = pandas.DataFrame ([[23, 'sravan', 'pase', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'sahaja', 'pase', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], columnas = ['id', 'nombre', 'estado', 'tarifa', 'puntos1', 'puntos2'])
Imprimir (Observaciones)
imprimir()
# Devolver las filas según la columna de tarifas donde la ID es mayor que 20 y el nombre termina con "N".
Imprimir (Observaciones [Observaciones.eval ("ID> 20 y nombre.stri.Endswith ('n').valores")])

Producción

Nombre de identificación Tarifa de estado Puntos1 Puntos2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
2 20 Sahaja Pass 100 78 90
3 22 Suryam Fail 450 76 56
Nombre de identificación Tarifa de estado Puntos1 Puntos2
0 23 Sravan Pass 1000 34 56

Solo hay una fila tal que el nombre termina con 'n', y la identificación es mayor que 20. Aquí, especificamos dos condiciones usando el operador "y".

Ejemplo 2

Devolver las filas según la columna 'tarifa' donde ID es mayor que 20 y 'Points1' es inferior a 35, y el nombre comienza con 'S'.

importación de pandas
importar numpy
Observaciones = pandas.DataFrame ([[23, 'sravan', 'pase', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'sahaja', 'pase', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], columnas = ['id', 'nombre', 'estado', 'tarifa', 'puntos1', 'puntos2'])
# Devolver las filas según la columna de tarifas donde ID es mayor de 20 y comienza con "S" y puntos1 menos de 35.
Imprimir (Observaciones [Observaciones.eval ("id> 20 y nombre.stri.Inicio con ('s').valores y puntos1 < 35")])

Producción

Nombre de identificación Tarifa de estado Puntos1 Puntos2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45

Dos filas coinciden con la condición.

Método 2: Uso de LOC []

Sintaxis

DataFrame_Object.Loc []

Parámetro

Etiqueta índice: Lista de cadenas o una sola cadena de los nombres de índice de la fila.

Ejemplo 1

Cree un marco de datos llamado 'Observaciones' con 6 columnas. Devolvamos las filas en función de la columna de tarifas donde la tarifa es mayor que 300 y puntos2 menos de 76.

importación de pandas
Observaciones = pandas.DataFrame ([[23, 'sravan', 'pase', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'sahaja', 'pase', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], columnas = ['id', 'nombre', 'estado', 'tarifa', 'puntos1', 'puntos2'])
# Muestra DataFrame - Observaciones
Imprimir (Observaciones)
imprimir()
# Devolver las filas según la columna de tarifas donde la tarifa es mayor que 300 y puntos2 menos de 76
Imprimir (Observaciones.Loc [(Observaciones ['Fee']> 300) y (Observaciones ['Points2'] < 76)])

Producción

Nombre de identificación Tarifa de estado Puntos1 Puntos2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
2 20 Sahaja Pass 100 78 90
3 22 Suryam Fail 450 76 56
Nombre de identificación Tarifa de estado Puntos1 Puntos2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
3 22 Suryam Fail 450 76 56

Hay 3 filas donde la tarifa es mayor que 300 y puntos2 menos de 76. Aquí, especificamos dos condiciones con el operador '&'.

Ejemplo 2:

Cree un marco de datos llamado 'Observaciones' con 6 columnas. Devolvamos las filas en función de la columna de tarifas donde la tarifa es mayor que 300 y puntos2 menos de 76.

importación de pandas
Observaciones = pandas.DataFrame ([[23, 'sravan', 'pase', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'sahaja', 'pase', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], columnas = ['id', 'nombre', 'estado', 'tarifa', 'puntos1', 'puntos2'])
# Devolver las filas según la columna de tarifas donde la tarifa es mayor que 300 y puntos2 menos de 76, y el estado es 'fallas'.
Imprimir (Observaciones.Loc [(Observaciones ['Fee']> 300) y (Observaciones ['Points2'] < 76) & (remarks['status'] == 'fail')])

Producción

Nombre de identificación Tarifa de estado Puntos1 Puntos2
1 21 Siva Fail 400 32 45
3 22 Suryam Fail 450 76 56

Hay 2 filas donde la tarifa es superior a 300 y puntos2 mayores que 76, y el estado es "fallar". Aquí, especificamos tres condiciones con el operador '&'.

Método 3: Uso de Query ()

Query () tomará la condición como una expresión de tal manera que las filas se filtren en el marco de datos en función de la expresión proporcionada. Asegúrese de que necesite escribir una expresión dentro de "".

Sintaxis

pandas.DataFrame_Object.consulta ("expresión")

Ejemplo

Devolvamos las filas en función de la columna de tarifas donde la tarifa es mayor que 300 y puntos2 menos de 76.

Importación de pandas
Observaciones = pandas.DataFrame ([[23, 'sravan', 'pase', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'sahaja', 'pase', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], columnas = ['id', 'nombre', 'estado', 'tarifa', 'puntos1', 'puntos2'])
# Devolver las filas según la columna de tarifas donde la tarifa es mayor que 300 y puntos2 menos de 76
Imprimir (Observaciones.consulta ("Tarifa> 300 y puntos2 < 76"))

Producción

Nombre de identificación Tarifa de estado Puntos1 Puntos2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
3 22 Suryam Fail 450 76 56

Hay 3 filas donde la tarifa es mayor que 300 y puntos2 menos de 76. Aquí, especificamos dos condiciones utilizando el operador 'y'.

Conclusión

El filtrado es la operación de marco de datos más utilizada en pandas. En esta guía, deliberamos cómo filtra DataFrame utilizando múltiples condiciones. Después de cubrir este artículo, es posible que pueda filtrar los datos utilizando múltiples condiciones usted mismo. Implementamos algunos ejemplos en este artículo para enseñarle cómo extraer datos del marco de datos con la ayuda de múltiples condiciones utilizando las diferentes funciones en pandas y numpy como loc [], query () y eval ().