So sánh chuỗi

Làm sạch dữ liệu với Python

Adel Nehme

VP of AI Curriculum, DataCamp

Trong chương này

 

 

 

 

 

 

Chương 4 - Liên kết bản ghi

Làm sạch dữ liệu với Python

Khoảng cách chỉnh sửa tối thiểu

Số bước ít nhất để đổi một chuỗi thành chuỗi khác

Làm sạch dữ liệu với Python

Khoảng cách chỉnh sửa tối thiểu

Số bước ít nhất để đổi một chuỗi thành chuỗi khác

Làm sạch dữ liệu với Python

Khoảng cách chỉnh sửa tối thiểu

Làm sạch dữ liệu với Python

Khoảng cách chỉnh sửa tối thiểu

Khoảng cách chỉnh sửa tối thiểu hiện tại: 2

Làm sạch dữ liệu với Python

Khoảng cách chỉnh sửa tối thiểu

Khoảng cách chỉnh sửa tối thiểu: 5

Làm sạch dữ liệu với Python

Khoảng cách chỉnh sửa tối thiểu

 

Làm sạch dữ liệu với Python

Thuật toán khoảng cách chỉnh sửa tối thiểu

Thuật toán Phép toán
Damerau-Levenshtein chèn, thay thế, xóa, hoán vị
Levenshtein chèn, thay thế, xóa
Hamming chỉ thay thế
Khoảng cách Jaro chỉ hoán vị
... ...

 

Gói có thể dùng: nltk, thefuzz, textdistance ..

Làm sạch dữ liệu với Python

Thuật toán khoảng cách chỉnh sửa tối thiểu

Thuật toán Phép toán
Damerau-Levenshtein chèn, thay thế, xóa, hoán vị
Levenshtein chèn, thay thế, xóa
Hamming chỉ thay thế
Khoảng cách Jaro chỉ hoán vị
... ...

 

Gói có thể dùng: thefuzz

Làm sạch dữ liệu với Python

So sánh chuỗi đơn giản

# Cho phép so sánh hai chuỗi
from thefuzz import fuzz

# So sánh reeding vs reading fuzz.WRatio('Reeding', 'Reading')
86
Làm sạch dữ liệu với Python

Chuỗi một phần và hoán đổi thứ tự

# So sánh chuỗi một phần
fuzz.WRatio('Houston Rockets', 'Rockets')
90
# So sánh một phần với trật tự khác
fuzz.WRatio('Houston Rockets vs Los Angeles Lakers', 'Lakers vs Rockets')
86
Làm sạch dữ liệu với Python

So sánh với mảng

# Import process
from thefuzz import process

# Chuỗi và danh sách ứng viên khớp
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)]
Làm sạch dữ liệu với Python

Gộp danh mục bằng độ tương đồng chuỗi

Chương 2

Dùng .replace() để gộp "eur" thành "Europe"

 

Nếu có quá nhiều biến thể thì sao?

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

 

                                                                                                Độ tương đồng chuỗi!

Làm sạch dữ liệu với Python

Gộp danh mục bằng khớp chuỗi

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
Làm sạch dữ liệu với Python

Gộp toàn bộ cột state

# Với mỗi danh mục đúng
for state in categories['state']:

# Tìm khớp tiềm năng trong các trạng thái có lỗi chính tả matches = process.extract(state, survey['state'], limit = survey.shape[0])
# Với mỗi khớp tiềm năng for potential_match in matches: # Nếu điểm tương đồng cao if potential_match[1] >= 80:
# Thay lỗi bằng danh mục đúng survey.loc[survey['state'] == potential_match[0], 'state'] = state
Làm sạch dữ liệu với Python

Liên kết bản ghi

liên kết bản ghi

Làm sạch dữ liệu với Python

Ayo berlatih!

Làm sạch dữ liệu với Python

Preparing Video For Download...