Python mờ phù hợp với nhiều cột

Xin chào, tôi muốn đối sánh thẳng hai cột [cả hai mã vị trí] theo số dự án bằng cách sử dụng công cụ Đối sánh mờ và đưa ra tỷ lệ phần trăm đối sánh dựa trên ký tự đối sánh

Tôi biết công cụ đối sánh mờ quá phức tạp và tôi tự hỏi liệu nó có phải là công cụ phù hợp không hay liệu tôi có thể làm điều đó trong excel không.  

Đôi khi bạn không muốn sử dụng OpenRefine. Tại sao không? . Nhưng vâng, chắc chắn rồi, đôi khi có thể bạn không

%matplotlib inline
import pandas as pd
____1
df.head[]

Kết quả Ngày Loại giao dịch Loại thanh toán Chi tiết thanh toán Số tiền Họ/Tên doanh nghiệp Tên Địa chỉ Thành phố. --------Loại báo cáoTên bầu cửLoại bầu cửThành phốVăn phòngLoại tệpTênNăm báo cáoĐã gửi014/3/2017Thu nhậpKiểm tra12864$350. 00Tài khoản Nhà nước của Đảng Cộng hòa AlaskaNaNNaNNaN. NaN24 Hour Report2017 - Cuộc bầu cử thành phố AnchorageAnchorage MunicipalAnchorage, Municipality of School Board Ứng cử viên Key E Schuster20174/3/2017124/3/2017Thu nhậpThẻ tín dụngNaN$500. 00Cà PhêDanNaNNaN. NaN24 Hour Report2017 - Bầu cử Thành phố AnchorageAnchorage Thành phố Anchorage, Ứng cử viên Hội đồng Trường Đô thịKay E Schuster20174/3/2017234/3/2017IncomeCheck3047$300. 00ACS Nhân viên PACNaNNaNNaN. Báo cáo giờ NaN242017 - Cuộc bầu cử thành phố AnchorageAnchorage MunicipalAnchorage, Thành phố của ứng cử viên Quốc hộiPete Petersen20174/3/2017344/3/2017Thu nhậpThẻ tín dụngNaN$500. 00HolmesPatrickNaNNaN. Báo cáo Giờ 24 của NaN2017 - Bầu cử Thành phố AnchorageAnchorage MunicipalAnchorage, Thành phố của NaNGroup Đảng Cộng hòa Alaska20174/3/2017454/3/2017Thu nhậpThẻ tín dụngNaN$500. 00GonzalesMark L. NaNNaN. NaN24 Hour Report2017 - Cuộc bầu cử thành phố AnchorageAnchorage MunicipalAnchorage, Thành phố của NaNGroup Đảng Cộng hòa Alaska20174/3/2017

5 hàng × 26 cột

Tất cả các lựa chọn của chúng tôi cho “quỹ PAC thí điểm trên biển Alaska” là gì?
df[df['Last/Business Name'] == 'Alaska Sea Pilot PAC fund'].shape

[3, 26]

df[df['Last/Business Name'] == 'ALASKA SEA PILOT PAC FUND'].shape

[6, 26]

df[df['Last/Business Name'] == 'Alaska Sea Pilot Pac Fund'].shape

[6, 26]

Có lẽ chúng ta có thể ném vào một biểu thức chính quy và bắt thêm một số?

df[df['Last/Business Name'].str.contains["Sea.*Pilot", na=False]]['Last/Business Name'].value_counts[]

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
0

Sử dụng Fuzzywuzzy để tìm các trận đấu mờ

Đối sánh mờ là đối sánh không đầy đủ hoặc không chính xác. Gói plumb của Python có một số chức năng có thể giúp ích cho bạn, mặc dù chúng hơi khó hiểu. Tôi sẽ lấy các ví dụ từ GitHub và chú thích chúng một chút, sau đó chúng ta sẽ sử dụng chúng

Đầu tiên, cài đặtuzzywuzzy với

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
1

Sau đó, chúng tôi sẽ nhập nó

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
2

HÃY ĐẢM BẢO BẠN ĐÃ CÀI ĐẶT BẰNG

df[df['Last/Business Name'] == 'Alaska Sea Pilot PAC fund'].shape
9 HOẶC KHÁC NÓ SẼ KHIẾU NẠI TẠI ĐÂY VÀ CŨNG SẼ CHẬM HƠN

[3, 26]
0 so sánh toàn bộ chuỗi, theo thứ tự

Mọi thứ trong chuỗi đều quan trọng ở đây

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
3

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
4

[3, 26]
1 so sánh các phần con của chuỗi

Trận đấu một phần là tốt. Dấu chấm than ở cuối khiến

[3, 26]
0 không giống so sánh lần trước, nhưng lần này thì không sao

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
5

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
6

[3, 26]
3 bỏ qua trật tự từ

[3, 26]
3 sắp xếp tất cả các từ trước, vì vậy “KENNEDY JOHN” và “JOHN KENNEDY” sẽ giống nhau

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
7

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
8

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
9

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
8

df.head[]
1

df.head[]
2

[3, 26]
5 bỏ qua các từ trùng lặp

Tôi không biết tại sao bạn lại có “JOHN KENNEDY KENNEDY” nhưng nếu bạn sử dụng

[3, 26]
5 thì nó chắc chắn sẽ khớp với “JOHN KENNEDY”

df.head[]
3

df = pd.read_csv["CD_Transactions_07-23-2017.CSV", index_col=False]
8

Trên thực tế, sử dụnguzzywuzzy trên tập dữ liệu của chúng tôi, bao gồm
[3, 26]
7
df.head[]
5

df.head[]
6

df.head[]
7

df.head[]
8

Vì chúng tôi đã nhập, hãy thu thập tất cả các tên doanh nghiệp thành một danh sách. Chúng tôi sẽ tìm kiếm trong danh sách để tìm những cái tên tương tự như Alaska Sea Pilot PAC Fun

df.head[]
9

df[df['Last/Business Name'] == 'Alaska Sea Pilot PAC fund'].shape
0

Bây giờ chúng ta sẽ sử dụng

[3, 26]
7 để tìm 15 trận đấu hàng đầu

df[df['Last/Business Name'] == 'Alaska Sea Pilot PAC fund'].shape
1

df[df['Last/Business Name'] == 'Alaska Sea Pilot PAC fund'].shape
2

Wow, những cái đó trông khá đẹp. Có lẽ thay vào đó chúng ta chỉ nên tìm những cái cao hơn một số điểm nhất định?

df[df['Last/Business Name'] == 'Alaska Sea Pilot PAC fund'].shape
3____34

df[df['Last/Business Name'] == 'Alaska Sea Pilot PAC fund'].shape
5

Hay, khá gọn gàng

Lọc trực tiếp vớiuzzywuzzy

Chúng tôi cũng có thể sử dụng điều này trực tiếp với khung dữ liệu của mình, nếu chúng tôi muốn sử dụng

df[df['Last/Business Name'] == 'ALASKA SEA PILOT PAC FUND'].shape
0 để lọc thay vì đưa cho chúng tôi danh sách. Nó sẽ chậm hơn rất nhiều, nhưng đó là cuộc sống, tôi đoán vậy

Chủ Đề