Pulizia dei dati in Python
Adel Nehme
VP of AI Curriculum, DataCamp

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

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


Distanza di edit minima finora: 2

Distanza di edit minima: 5

| 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 ..
| Algoritmo | Operazioni |
|---|---|
| Damerau-Levenshtein | inserimento, sostituzione, eliminazione, trasposizione |
| Levenshtein | inserimento, sostituzione, eliminazione |
| Hamming | solo sostituzione |
| Distanza di Jaro | solo trasposizione |
| ... | ... |
Possibili pacchetti: thefuzz
# Consente di confrontare due stringhe from thefuzz import fuzz# Confronta reeding vs reading fuzz.WRatio('Reeding', 'Reading')
86
# 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
# 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)]
Capitolo 2
Usa .replace() per unire "eur" in "Europe"
E se ci fossero troppe varianti?
"EU", "eur", "Europ", "Europa", "Erope", "Evropa"...
Similarità tra stringhe!
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
# 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