Filtrar filas que contienen una cadena específica en Pandas

Fariba Laiq 15 febrero 2024
  1. Instalar bibliotecas de requisitos previos
  2. Crear un marco de datos de pandas
  3. Use str.contains() para filtrar filas que contienen una cadena específica
  4. Use str.contains() para filtrar filas que contienen una cadena en una lista
Filtrar filas que contienen una cadena específica en Pandas

La biblioteca Pandas es una herramienta completa para manejar datos de texto además de números. Querrá excluir la entrada de texto de muchas aplicaciones de análisis de datos y exploración/preprocesamiento de aprendizaje automático.

Los marcos de datos en Python son una estructura de datos primaria presente en el módulo Pandas. Estas estructuras de datos se utilizan para almacenar y procesar datos en formularios tabulares.

Uno de esos procesos que se realizan en los datos almacenados en formato tabular es filtrar el marco de datos por criterios de subcadena para que se pueda extraer información relevante. Este artículo pasará por un procedimiento paso a paso para realizar esta misma operación.

Instalar bibliotecas de requisitos previos

Para comenzar a filtrar el marco de datos de Pandas, primero debemos instalar la biblioteca de Pandas. Podemos lograr esto rápidamente ejecutando el siguiente comando en la terminal de elección:

pip install pandas

También es fundamental asegurarse de que trabajamos con la versión correcta de Python. En este artículo, estamos usando la versión 3.10.4.

Podemos verificar la versión de Python actualmente instalada ejecutando el siguiente comando en la terminal:

python --version

Crear un marco de datos de pandas

Para realizar la operación de filtrado de marcos de datos, necesitaremos un marco de datos de ejemplo; por lo tanto, generaremos un marco de datos para nuestro artículo usando el código a continuación. Nos muestra los nombres de cinco estudiantes que están siendo calificados en dos materias, Biología y Química, de 100.

Código de ejemplo:

import pandas as pd

data = {
    "Student_Name": ["Anil", "Suharwardy", "Fatina", "John", "Karen"],
    "Biology": [68, 73, 87, 58, 78],
    "Chemistry": [78, 98, 89, 73, 87],
}
data_frame = pd.DataFrame(data)
print(data_frame)

Entonces, el código anterior es bastante sencillo. Comenzamos importando la biblioteca de Pandas y luego inicializamos la variable datos como un diccionario que contiene la información que queremos insertar en nuestro marco de datos resultante.

Luego usamos el método DataFrame() en el módulo Pandas para generar nuestro marco de datos pasando el diccionario de datos a la técnica mencionada anteriormente.

El siguiente marco de datos se genera cuando ejecutamos el código.

Producción:

Ejemplo de marco de datos de Pandas

Use str.contains() para filtrar filas que contienen una cadena específica

Ahora que hemos creado nuestro marco de datos, podemos pasar al paso de filtrado. Supongamos que queremos filtrar los datos del alumno Suharwardy; el resultado debería ser toda la información almacenada contra Suharwardy.

Podemos realizar esta operación usando el método str.contains(). En el fragmento a continuación, hemos accedido a la columna del marco de datos Student_Name y, usando el método str.contains(), accedimos a la información almacenada contra el nombre Suharwardy.

Código de ejemplo:

import pandas as pd

data = {
    "Student_Name": ["Anil", "Suharwardy", "Fatina", "John", "Karen"],
    "Biology": [68, 73, 87, 58, 78],
    "Chemistry": [78, 98, 89, 73, 87],
}
data_frame = pd.DataFrame(data=data)
df = data_frame[data_frame["Student_Name"].str.contains("Suharwardy")]
print(df)

Producción:

Filas de filtro de pandas que contienen una cadena usando str.contains

Una forma aún más sencilla e intuitiva de realizar esta operación podría ser utilizar el operador punto para acceder a la columna Nombre_Estudiante. Obtenemos los mismos resultados.

Código de ejemplo:

import pandas as pd

data = {
    "Student_Name": ["Anil", "Suharwardy", "Fatina", "John", "Karen"],
    "Biology": [68, 73, 87, 58, 78],
    "Chemistry": [78, 98, 89, 73, 87],
}
data_frame = pd.DataFrame(data=data)
df = data_frame[data_frame.Student_Name.str.contains("Suharwardy")]
print(df)

Producción:

Filas de filtro de pandas que contienen una cadena usando str.contains y operador de punto

El método str.contains() también tiene el parámetro regex, que puede utilizar para obtener resultados más rápidos configurándolo como False.

Código de ejemplo:

import pandas as pd
import regex as regex

data = {
    "Student_Name": ["Anil", "Suharwardy", "Fatina", "John", "Karen"],
    "Biology": [68, 73, 87, 58, 78],
    "Chemistry": [78, 98, 89, 73, 87],
}
data_frame = pd.DataFrame(data=data)
df = data_frame[data_frame.Student_Name.str.contains("Suharwardy", regex=False)]
print(df)

Producción:

Filas de filtro de pandas que contienen una cadena usando str.contains y regex

Así es como podemos filtrar un dataframe de Pandas usando el método str.contains() y especificar los detalles de la información que queremos extraer.

Use str.contains() para filtrar filas que contienen una cadena en una lista

El siguiente código muestra cómo filtrar filas de marcos de datos que contienen ID1 o ID2 en la columna ID.

Código de ejemplo:

import pandas as pd

d1 = {
    "ID": [
        "ID1",
        "ID1",
        "ID2",
        "ID2",
        "ID3",
        "ID3",
    ],
    "Names": ["Harry", "Petter", "Daniel", "Ron", "Sofia", "Kelvin"],
    "marks": [70, 80, 90, 70, 60, 90],
}
df = pd.DataFrame(d1)
print(df)
s = df[df["ID"].str.contains("ID1|ID2")]
print("use of str.contains() : ")
print(s)

Producción:

Filas de filtro de pandas que contienen una cadena en una lista usando str.contains

Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

Artículo relacionado - Pandas String