Confrontare stringhe

Pulizia dei dati in Python

Adel Nehme

VP of AI Curriculum, DataCamp

In questo capitolo

 

 

 

 

 

 

Capitolo 4 - Record linkage

Pulizia dei dati in Python

Distanza di edit minima

Numero minimo di passaggi per trasformare una stringa in un'altra

Pulizia dei dati in Python

Distanza di edit minima

Numero minimo di passaggi per trasformare una stringa in un'altra

Pulizia dei dati in Python

Distanza di edit minima

Pulizia dei dati in Python

Distanza di edit minima

Distanza di edit minima finora: 2

Pulizia dei dati in Python

Distanza di edit minima

Distanza di edit minima: 5

Pulizia dei dati in Python

Distanza di edit minima

 

Pulizia dei dati in Python

Algoritmi di distanza di edit minima

Algoritmo Operazioni
Damerau-Levenshtein inserimento, sostituzione, eliminazione, trasposizione
Levenshtein inserimento, sostituzione, eliminazione
Hamming solo sostituzione
Distanza di Jaro solo trasposizione
... ...

 

Possibili pacchetti: nltk, thefuzz, textdistance ..

Pulizia dei dati in Python

Algoritmi di distanza di edit minima

Algoritmo Operazioni
Damerau-Levenshtein inserimento, sostituzione, eliminazione, trasposizione
Levenshtein inserimento, sostituzione, eliminazione
Hamming solo sostituzione
Distanza di Jaro solo trasposizione
... ...

 

Possibili pacchetti: thefuzz

Pulizia dei dati in Python

Confronto semplice di stringhe

# Consente di confrontare due stringhe
from thefuzz import fuzz

# Confronta reeding vs reading fuzz.WRatio('Reeding', 'Reading')
86
Pulizia dei dati in Python

Stringhe parziali e ordini diversi

# Confronto parziale di stringhe
fuzz.WRatio('Houston Rockets', 'Rockets')
90
# Confronto parziale con ordine diverso
fuzz.WRatio('Houston Rockets vs Los Angeles Lakers', 'Lakers vs Rockets')
86
Pulizia dei dati in Python

Confronto con array

# Importa process
from thefuzz import process

# Definisci stringa e array di possibili match
string = "Houston Rockets vs Los Angeles Lakers"
choices = pd.Series(['Rockets vs Lakers', 'Lakers vs Rockets', 
                     'Houson vs Los Angeles', 'Heat vs Bulls'])

process.extract(string, choices, limit = 2)
[('Rockets vs Lakers', 86, 0), ('Lakers vs Rockets', 86, 1)]
Pulizia dei dati in Python

Unire categorie con similarità tra stringhe

Capitolo 2

Usa .replace() per unire "eur" in "Europe"

 

E se ci fossero troppe varianti?

"EU", "eur", "Europ", "Europa", "Erope", "Evropa"...

 

                                                                                                Similarità tra stringhe!

Pulizia dei dati in Python

Unire categorie con string matching

print(survey['state'].unique())
id          state
0      California
1            Cali
2      Calefornia
3      Calefornie
4      Californie
5       Calfornia
6      Calefernia
7        New York
8   New York City
...
categories
  state
0 California
1 New York
Pulizia dei dati in Python

Unire tutti gli stati

# Per ogni categoria corretta
for state in categories['state']:

# Trova possibili match negli stati con errori matches = process.extract(state, survey['state'], limit = survey.shape[0])
# Per ogni possibile match for potential_match in matches: # Se lo score di similarità è alto if potential_match[1] >= 80:
# Sostituisci l'errore con la categoria corretta survey.loc[survey['state'] == potential_match[0], 'state'] = state
Pulizia dei dati in Python

Record linkage

record linkage

Pulizia dei dati in Python

Passiamo alla pratica !

Pulizia dei dati in Python

Preparing Video For Download...