كيفية إجراء المطابقة الغامضة في الباندا (مع مثال)


في كثير من الأحيان قد ترغب في ضم مجموعتي بيانات معًا في الباندا بناءً على سلاسل متطابقة بشكل غير كامل. وهذا ما يسمى مطابقة غامضة .

أسهل طريقة لإجراء مطابقة غامضة في الباندا هي استخدام الدالة get_Close_matches() من الحزمة difflib .

يوضح المثال التالي كيفية استخدام هذه الوظيفة عمليًا.

مثال: المراسلات الغامضة في الباندا

لنفترض أن لدينا إطاري بيانات الباندا التاليين اللذين يحتويان على معلومات حول فرق كرة السلة المختلفة:

 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

لنفترض الآن أننا نريد دمج إطاري البيانات استنادًا إلى عمود الفريق .

نظرًا لأن أسماء الفريق تختلف قليلاً بين إطاري البيانات، فنحن بحاجة إلى استخدام المطابقة الغامضة للعثور على أسماء الفرق الأكثر تطابقًا.

يمكننا استخدام الدالة get_ Close_matches () من الحزمة difflib للقيام بذلك:

 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

والنتيجة هي إطار بيانات يحتوي على كل من أسماء الفرق الخمسة من DataFrame الأول بالإضافة إلى الفريق الذي يتطابق بشكل وثيق مع DataFrame الثاني.

يعرض عمود team_match اسم الفريق من DataFrame الثاني الذي يتطابق بشكل وثيق مع اسم الفريق من DataFrame الأول.

ملاحظة رقم 1 : بشكل افتراضي، تقوم get_Close_matches() بإرجاع أقرب ثلاث تطابقات. ومع ذلك، باستخدام [0] في نهاية وظيفة lambda، تمكنا فقط من إرجاع أقرب تطابق لاسم الفريق.

ملاحظة رقم 2: يمكنك العثور على الوثائق الكاملة لوظيفة get_Close_matches() هنا .

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في الباندا:

كيفية دمج Pandas DataFrames عبر أعمدة متعددة
كيفية دمج اثنين من إطارات بيانات Pandas في ملف Index
الباندا الانضمام أو الدمج: ما هو الفرق؟

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *