No mundo da análise de dados, é comum encontrar grandes conjuntos de dados que requerem manipulação e processamento de dados. Um desses problemas que frequentemente surge é a filtragem de linhas com base em valores difusos, principalmente ao lidar com dados textuais. Pandas, uma biblioteca Python popular para manipulação de dados, fornece uma solução elegante para ajudar a resolver esse problema. Neste artigo, vamos nos aprofundar em como usar o Pandas para filtrar linhas usando valores difusos, explorar o código passo a passo e discutir bibliotecas e funções relevantes que podem ajudar na solução de problemas semelhantes.
Para começar a resolver esse problema, aproveitaremos o Pandas biblioteca juntamente com o felpudo, macio biblioteca que ajuda a calcular a similaridade entre strings diferentes. O felpudo, macio A biblioteca usa a distância de Levenshtein, uma medida de similaridade baseada no número de edições (inserções, exclusões ou substituições) necessárias para transformar uma string em outra.
Instalando e importando as bibliotecas necessárias
Para começar, precisamos instalar e importar as bibliotecas necessárias. Você pode usar o pip para instalar o Pandas e o fuzzywuzzy:
pip install pandas pip install fuzzywuzzy
Uma vez instalado, importe as bibliotecas em seu código Python:
import pandas as pd from fuzzywuzzy import fuzz, process
Filtrando linhas com base em valores difusos
Agora que importamos as bibliotecas necessárias, vamos criar um conjunto de dados fictício e mostrar como filtrar linhas com base em valores difusos. Neste exemplo, nosso conjunto de dados consistirá em nomes de roupas e seus estilos correspondentes.
data = {'Garment': ['T-shirt', 'Polo shirt', 'Jeans', 'Leather jacket', 'Winter coat'], 'Style': ['Casual', 'Casual', 'Casual', 'Biker', 'Winter']} df = pd.DataFrame(data)
Assumindo que queremos filtrar linhas contendo roupas com nomes semelhantes a “Tee shirt”, precisaremos empregar a biblioteca fuzzywuzzy para fazer isso.
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)
No código acima, definimos uma função filtro_linhas que leva quatro parâmetros: o DataFrame, o nome da coluna, a string de pesquisa e o limite de similaridade. Ele retorna um DataFrame filtrado com base no limite especificado, que é calculado usando o fuzz.token_sort_ratio função da biblioteca fuzzywuzzy.
Entendendo o código passo a passo
- Primeiro, criamos um DataFrame chamado df contendo nosso conjunto de dados.
- Em seguida, definimos nossa string de pesquisa como “Camiseta” e definimos um limite de similaridade de 70. Você pode ajustar o valor do limite de acordo com o nível de similaridade desejado.
- Em seguida, criamos uma função chamada filtro_linhas, que filtra o DataFrame com base na distância de Levenshtein entre a string de pesquisa e o valor de cada linha na coluna especificada.
- Finalmente, chamamos o filtro_linhas função para obter nosso DataFrame filtrado, filtrado_df.
Em conclusão, o Pandas, em combinação com a biblioteca fuzzywuzzy, é uma excelente ferramenta para filtrar linhas com base em valores fuzzy. Compreender essas bibliotecas e suas funções nos permite manipular dados com eficiência e resolver tarefas complexas de processamento de dados.