Pandalarda bulanık eşleştirme nasıl yapılır (örnekle)
Çoğu zaman, kusurlu şekilde eşleşen dizelere dayalı olarak iki veri kümesini pandalarda birleştirmek isteyebilirsiniz. Buna bulanık eşleştirme denir.
Pandalarda bulanık eşleştirme yapmanın en kolay yolu difflib paketindeki get_close_matches() işlevini kullanmaktır.
Aşağıdaki örnekte bu fonksiyonun pratikte nasıl kullanılacağı gösterilmektedir.
Örnek: pandalardaki bulanık yazışmalar
Diyelim ki çeşitli basketbol takımları hakkında bilgi içeren aşağıdaki iki panda DataFrame’imiz var:
import pandas as pd
#create two DataFrames
df1 = pd. DataFrame ({' team ': ['Mavericks', 'Nets', 'Warriors', 'Heat', 'Lakers'],
' points ': [99, 90, 104, 117, 100]})
df2 = pd. DataFrame ({' team ': ['Mavricks', 'Warrors', 'Heat', 'Netts', 'Lakes'],
' assists ': [22, 29, 17, 40, 32]})
#view DataFrames
print (df1)
team points
0 Mavericks 99
1 Nets 90
2 Warriors 104
3 Heat 117
4 Lakers 100
print (df2)
team assists
0 Mavricks 22
1 Warriors 29
2 Heat 17
3 Netts 40
4 Lakes 32
Şimdi iki DataFrame’i Ekip sütununa göre birleştirmek istediğimizi varsayalım.
Takım adları iki DataFrame arasında biraz farklı olduğundan, en çok eşleşen takım adlarını bulmak için bulanık eşleştirmeyi kullanmamız gerekir.
Bunu yapmak için difflib paketindeki get_close_matches() işlevini kullanabiliriz:
import difflib
#create duplicate column to retain team name from df2
df2[' team_match '] = df2[' team ']
#convert team name in df2 to team name it most closely matches in df1
df2[' team '] = df2[' team ']. apply (lambda x: difflib. get_close_matches (x, df1[' team '])[ 0 ])
#merge the DataFrames into one
df3 = df1. merge (df2)
#view final DataFrame
print (df3)
team points assists team_match
0 Mavericks 99 22 Mavricks
1 Nets 90 40 Nets
2 Warriors 104 29 Warriors
3 Heat 117 17 Heat
4 Lakers 100 32 Lakes
Sonuç, ilk DataFrame’deki beş takım adının her birinin yanı sıra ikinci DataFrame’e en yakın eşleşen takımı içeren bir veri çerçevesidir.
Team_match sütunu, ilk DataFrame’deki takım adıyla en yakından eşleşen ikinci DataFrame’deki takım adını görüntüler.
Not #1 : Varsayılan olarak get_close_matches() işlevi en yakın üç eşleşmeyi döndürür. Ancak lambda fonksiyonunun sonundaki [0]’ ı kullanarak sadece en yakın takım adı eşleşmesini döndürebildik.
Not #2: get_close_matches() işlevine ilişkin tüm belgeleri burada bulabilirsiniz.
Ek kaynaklar
Aşağıdaki eğitimlerde pandalarda diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
Pandas DataFrames’ı birden çok sütunda birleştirme
Dizinde iki Pandas DataFrame nasıl birleştirilir
Pandaların Birleştirilmesi veya Birleştirilmesi: Fark nedir?