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- ကွာခြားချက်ကဘာလဲ။