Порівняння рядків

Очищення даних у Python

Adel Nehme

VP of AI Curriculum, DataCamp

У цьому розділі

 

 

 

 

 

 

Розділ 4 — Зв'язування записів

Очищення даних у Python

Мінімальна відстань редагування

Мінімальна кількість кроків для переходу від одного рядка до іншого

Очищення даних у Python

Мінімальна відстань редагування

Мінімальна кількість кроків для переходу від одного рядка до іншого

Очищення даних у Python

Мінімальна відстань редагування

Очищення даних у Python

Мінімальна відстань редагування

Поточна мінімальна відстань редагування: 2

Очищення даних у Python

Мінімальна відстань редагування

Мінімальна відстань редагування: 5

Очищення даних у Python

Мінімальна відстань редагування

 

Очищення даних у Python

Алгоритми мінімальної відстані редагування

Алгоритм Операції
Дамерау — Левенштейна вставка, заміна, видалення, транспозиція
Левенштейна вставка, заміна, видалення
Хеммінга лише заміна
Відстань Яро лише транспозиція
... ...

 

Можливі пакети: nltk, thefuzz, textdistance ..

Очищення даних у Python

Алгоритми мінімальної відстані редагування

Алгоритм Операції
Дамерау — Левенштейна вставка, заміна, видалення, транспозиція
Левенштейна вставка, заміна, видалення
Хеммінга лише заміна
Відстань Яро лише транспозиція
... ...

 

Можливі пакети: thefuzz

Очищення даних у Python

Просте порівняння рядків

# Дозволяє порівнювати два рядки
from thefuzz import fuzz

# Порівняння reeding і reading fuzz.WRatio('Reeding', 'Reading')
86
Очищення даних у Python

Часткові збіги та різний порядок

# Часткове порівняння рядків
fuzz.WRatio('Houston Rockets', 'Rockets')
90
# Часткове порівняння з іншим порядком
fuzz.WRatio('Houston Rockets vs Los Angeles Lakers', 'Lakers vs Rockets')
86
Очищення даних у Python

Порівняння з масивами

# Імпортуємо process
from thefuzz import process

# Рядок та масив можливих збігів
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)]
Очищення даних у Python

Зведення категорій за схожістю рядків

Розділ 2

Використайте .replace(), щоб звести "eur" до "Europe"

 

А якщо варіацій надто багато?

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

 

                                                                                                Схожість рядків!

Очищення даних у Python

Зведення категорій шляхом зіставлення рядків

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
Очищення даних у Python

Зведення всіх станів

# Для кожної правильної категорії
for state in categories['state']:

# Знайти потенційні збіги серед станів з помилками matches = process.extract(state, survey['state'], limit = survey.shape[0])
# Для кожного потенційного збігу for potential_match in matches: # Якщо високий показник схожості if potential_match[1] >= 80:
# Замінити помилковий варіант на правильну категорію survey.loc[survey['state'] == potential_match[0], 'state'] = state
Очищення даних у Python

Зв'язування записів

зв'язування записів

Очищення даних у Python

Давайте потренуємось!

Очищення даних у Python

Preparing Video For Download...