Comparando strings

Limpeza de dados em Python

Adel Nehme

VP of AI Curriculum, DataCamp

Neste capítulo

 

 

 

 

 

 

Capítulo 4 - Vinculação de registros

Limpeza de dados em Python

Distância mínima de edição

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

Limpeza de dados em Python

Distância mínima de edição

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

Limpeza de dados em Python

Distância mínima de edição

Limpeza de dados em Python

Distância mínima de edição

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

Limpeza de dados em Python

Distância mínima de edição

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

Limpeza de dados em Python

Distância mínima de edição

 

Limpeza de dados em Python

Algoritmos de distância mínima de edição

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 ..

Limpeza de dados em Python

Algoritmos de distância mínima de edição

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

Limpeza de dados em Python

Comparação simples de strings

# Permite comparar duas strings
from thefuzz import fuzz

# Comparar reeding vs reading fuzz.WRatio('Reeding', 'Reading')
86
Limpeza de dados em Python

Parciais e ordens diferentes

# 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
Limpeza de dados em Python

Comparação com listas/arrays

# 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)]
Limpeza de dados em Python

Colapsando categorias com similaridade de strings

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!

Limpeza de dados em Python

Colapsando categorias com correspondência 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
Limpeza de dados em Python

Colapsando todos os estados

# 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

Vinculação de registros

vinculação de registros

Limpeza de dados em Python

Vamos praticar!

Limpeza de dados em Python

Preparing Video For Download...