Resuelto: pandas filtran filas por valores borrosos

Actualización definitiva: 09/11/2023

En el mundo del análisis de datos, es común encontrar grandes conjuntos de datos que requieren manipulación y procesamiento de datos. Uno de esos problemas que surge con frecuencia es el filtrado de filas en función de valores borrosos, especialmente cuando se trata de datos textuales. Pandas, una popular biblioteca de Python para la manipulación de datos, proporciona una solución elegante para ayudar a abordar este problema. En este artículo, profundizaremos en cómo usar Pandas para filtrar filas usando valores borrosos, explorar el código paso a paso y discutir bibliotecas y funciones relevantes que pueden ayudar a resolver problemas similares.

Para comenzar a abordar este problema, aprovecharemos la pandas biblioteca junto con la borroso biblioteca que ayuda a calcular la similitud entre diferentes cadenas. El borroso biblioteca utiliza la distancia de Levenshtein, una medida de similitud basada en la cantidad de ediciones (inserciones, eliminaciones o sustituciones) necesarias para transformar una cadena en otra.

Instalación e importación de bibliotecas requeridas

Para comenzar, necesitaremos instalar e importar las bibliotecas necesarias. Puedes usar pip para instalar Pandas y fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

Una vez instalado, importe las bibliotecas en su código Python:

import pandas as pd
from fuzzywuzzy import fuzz, process

Filtrado de filas basado en valores borrosos

Ahora que hemos importado las bibliotecas requeridas, creemos un conjunto de datos ficticio y mostremos cómo filtrar filas en función de valores borrosos. En este ejemplo, nuestro conjunto de datos consistirá en nombres de prendas y sus estilos correspondientes.

data = {'Garment': ['T-shirt', 'Polo shirt', 'Jeans', 'Leather jacket', 'Winter coat'],
        'Style': ['Casual', 'Casual', 'Casual', 'Biker', 'Winter']}
df = pd.DataFrame(data)

Suponiendo que queremos filtrar filas que contengan prendas con nombres similares a "Camiseta", necesitaremos emplear la biblioteca fuzzywuzzy para lograr esto.

search_string = "Tee shirt"
threshold = 70

def filter_rows(df, column, search_string, threshold):
    return df[df[column].apply(lambda x: fuzz.token_sort_ratio(x, search_string)) >= threshold]

filtered_df = filter_rows(df, 'Garment', search_string, threshold)

En el código anterior, definimos una función filtrar_filas que toma cuatro parámetros: el DataFrame, el nombre de la columna, la cadena de búsqueda y el umbral de similitud. Devuelve un DataFrame filtrado basado en el umbral especificado, que se calcula usando el fuzz.token_sort_ratio función de la biblioteca fuzzywuzzy.

Comprender el código paso a paso

  • Primero, creamos un DataFrame llamado df que contiene nuestro conjunto de datos.
  • A continuación, definimos nuestra cadena de búsqueda como "Camiseta" y establecemos un umbral de similitud de 70. Puede ajustar el valor del umbral según el nivel de similitud deseado.
  • Luego creamos una función llamada filtrar_filas, que filtra el marco de datos en función de la distancia de Levenshtein entre la cadena de búsqueda y el valor de cada fila en la columna especificada.
  • Finalmente, llamamos al filtrar_filas función para obtener nuestro DataFrame filtrado, filtrado_df.

En conclusión, Pandas, en combinación con la biblioteca fuzzywuzzy, es una excelente herramienta para filtrar filas en función de valores difusos. Comprender estas bibliotecas y sus funciones nos permite manipular datos de manera eficiente y resolver tareas complejas de procesamiento de datos.

Artículos Relacionados: