Pandas တွင် fuzzy matching ပြုလုပ်နည်း (ဥပမာဖြင့်)


မကြာခဏဆိုသလို သင်သည် မစုံလင်သော ကိုက်ညီသော စာကြောင်းများကို အခြေခံ၍ ပန်ဒါများတွင် ဒေတာအတွဲနှစ်ခုကို အတူတကွ ပူးပေါင်းလိုပေမည်။ ဒါကို fuzzy matching လို့ခေါ်တယ်။

ပန်ဒါများတွင် fuzzy matching ပြုလုပ်ရန် အလွယ်ကူဆုံးနည်းလမ်းမှာ difflib package မှ get_close_matches() လုပ်ဆောင်ချက်ကို အသုံးပြုခြင်းဖြစ်သည်။

အောက်ဖော်ပြပါ ဥပမာသည် ဤလုပ်ဆောင်ချက်ကို လက်တွေ့အသုံးချနည်းကို ပြသထားသည်။

ဥပမာ- ပန်ဒါများတွင် မပီမသ စာပေးစာယူ

အမျိုးမျိုးသောဘတ်စကက်ဘောအသင်းများအကြောင်းအချက်အလက်ပါရှိသောအောက်ပါပန်ဒါဒေတာဘောင်နှစ်ခုရှိသည်ဆိုကြပါစို့။

 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

ယခု Team ကော်လံကို အခြေခံ၍ DataFrames နှစ်ခုကို ပေါင်းစည်းလိုသည်ဆိုကြပါစို့။

အဖွဲ့အမည်များသည် DataFrames နှစ်ခုကြားတွင် အနည်းငယ်ကွဲပြားသောကြောင့်၊ အများဆုံးကိုက်ညီသည့်အသင်းအမည်များကိုရှာဖွေရန် fuzzy matching ကိုအသုံးပြုရန်လိုအပ်ပါသည်။

ဒါကိုလုပ်ဖို့ difflib အထုပ်ထဲက get_close_matches() လုပ်ဆောင်ချက်ကို အသုံးပြုနိုင်ပါတယ်။

 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() သည် အနီးစပ်ဆုံးကိုက်ညီမှု သုံးခုကို ပြန်ပေးသည်။ သို့သော်၊ lambda လုပ်ဆောင်ချက်၏အဆုံးတွင် [0] ကိုအသုံးပြုခြင်းဖြင့်၊ ကျွန်ုပ်တို့သည် အနီးစပ်ဆုံးအသင်းအမည်ပွဲကိုသာ ပြန်နိုင်ခဲ့သည်။

မှတ်ချက် #2- get_close_matches() လုပ်ဆောင်ချက်အတွက် စာရွက်စာတမ်းအပြည့်အစုံကို ဤနေရာတွင် ရှာတွေ့နိုင်ပါသည်။

ထပ်လောင်းအရင်းအမြစ်များ

အောက်ဖော်ပြပါ သင်ခန်းစာများသည် ပန်ဒါများတွင် အခြားဘုံအလုပ်များကို မည်သို့လုပ်ဆောင်ရမည်ကို ရှင်းပြသည်-

ကော်လံအများအပြားတွင် Pandas DataFrames ကို ပေါင်းစည်းနည်း
အညွှန်းတွင် Pandas DataFrames နှစ်ခုကို ပေါင်းစပ်နည်း
Pandas Join သို့မဟုတ် Merge- ကွာခြားချက်ကဘာလဲ။

မှတ်ချက်တစ်ခုထည့်ပါ။

သင့် email လိပ်စာကို ဖော်ပြမည် မဟုတ်ပါ။ လိုအပ်သော ကွက်လပ်များကို * ဖြင့်မှတ်သားထားသည်