Limpeza de dados em Python
Adel Nehme
VP of AI Curriculum, DataCamp

Menor número de passos para converter uma string em outra

Menor número de passos para converter uma string em outra


Distância mínima de edição até agora: 2

Distância mínima de edição: 5

| Algoritmo | Operações |
|---|---|
| Damerau-Levenshtein | inserção, substituição, deleção, transposição |
| Levenshtein | inserção, substituição, deleção |
| Hamming | só substituição |
| Distância de Jaro | só transposição |
| ... | ... |
Pacotes possíveis: nltk, thefuzz, textdistance ..
| Algoritmo | Operações |
|---|---|
| Damerau-Levenshtein | inserção, substituição, deleção, transposição |
| Levenshtein | inserção, substituição, deleção |
| Hamming | só substituição |
| Distância de Jaro | só transposição |
| ... | ... |
Pacotes possíveis: thefuzz
# Permite comparar duas strings from thefuzz import fuzz# Comparar reeding vs reading fuzz.WRatio('Reeding', 'Reading')
86
# Comparação parcial de strings
fuzz.WRatio('Houston Rockets', 'Rockets')
90
# Parcial com ordem diferente
fuzz.WRatio('Houston Rockets vs Los Angeles Lakers', 'Lakers vs Rockets')
86
# Importar process
from thefuzz import process
# Definir string e lista de possíveis correspondências
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)]
Capítulo 2
Use .replace() para colapsar "eur" em "Europe"
E se houver variações demais?
"EU", "eur", "Europ", "Europa", "Erope", "Evropa"...
Similaridade de strings!
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
# Para cada categoria correta for state in categories['state']:# Encontrar possíveis correspondências em estados com erros de digitação matches = process.extract(state, survey['state'], limit = survey.shape[0])# Para cada possível correspondência for potential_match in matches: # Se a similaridade for alta if potential_match[1] >= 80:# Substituir o erro pela categoria correta survey.loc[survey['state'] == potential_match[0], 'state'] = state

Limpeza de dados em Python