En el món de l'anàlisi de dades, és habitual trobar-se amb grans conjunts de dades que requereixen manipulació i processament de dades. Un d'aquests problemes que sovint sorgeix és filtrar les files basades en valors difusos, especialment quan es tracta de dades textuals. Pandas, una popular biblioteca de Python per a la manipulació de dades, ofereix una solució elegant per ajudar a resoldre aquest problema. En aquest article, analitzarem com utilitzar Pandas per filtrar files amb valors difusos, explorarem el codi pas a pas i parlarem de biblioteques i funcions rellevants que poden ajudar a resoldre problemes similars.
Per començar a resoldre aquest problema, aprofitarem el pandes biblioteca juntament amb el fuzzywuzzy biblioteca que ajuda a calcular la similitud entre diferents cadenes. El fuzzywuzzy La biblioteca utilitza la distància de Levenshtein, una mesura de similitud basada en el nombre d'edicions (insercions, supressions o substitucions) necessàries per transformar una cadena en una altra.
Instal·lació i importació de les biblioteques necessàries
Per començar, haurem d'instal·lar i importar les biblioteques necessàries. Podeu utilitzar pip per instal·lar tant Pandas com fuzzywuzzy:
pip install pandas pip install fuzzywuzzy
Un cop instal·lats, importeu les biblioteques al vostre codi Python:
import pandas as pd from fuzzywuzzy import fuzz, process
Filtratge de files en funció de valors difusos
Ara que hem importat les biblioteques necessàries, creem un conjunt de dades ficticis i mostrem com filtrar les files en funció de valors difusos. En aquest exemple, el nostre conjunt de dades consistirà en noms de peces de vestir i els seus estils corresponents.
data = {'Garment': ['T-shirt', 'Polo shirt', 'Jeans', 'Leather jacket', 'Winter coat'],
'Style': ['Casual', 'Casual', 'Casual', 'Biker', 'Winter']}
df = pd.DataFrame(data)
Suposant que volem filtrar les files que contenen peces de roba amb noms semblants a "Camiseta", haurem d'utilitzar la biblioteca fuzzywuzzy per aconseguir-ho.
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 codi anterior, definim una funció filtre_files que pren quatre paràmetres: el DataFrame, el nom de la columna, la cadena de cerca i el llindar de semblança. Retorna un DataFrame filtrat basat en el llindar especificat, que es calcula mitjançant l' fuzz.token_sort_ratio funció de la biblioteca fuzzywuzzy.
Comprensió del codi pas a pas
- Primer, creem un DataFrame anomenat df que conté el nostre conjunt de dades.
- A continuació, definim la nostra cadena de cerca com a "Samarreta" i establim un llindar de semblança de 70. Podeu ajustar el valor del llindar segons el vostre nivell de similitud desitjat.
- Aleshores creem una funció anomenada filtre_files, que filtra el DataFrame en funció de la distància de Levenshtein entre la cadena de cerca i el valor de cada fila a la columna especificada.
- Finalment, anomenem el filtre_files funció per obtenir el nostre DataFrame filtrat, filtrat_df.
En conclusió, Pandas, en combinació amb la biblioteca fuzzywuzzy, és una eina excel·lent per filtrar files en funció de valors difusos. Entendre aquestes biblioteques i les seves funcions ens permet manipular dades de manera eficient i resoldre tasques complexes de processament de dades.