Pandas တွင် groupby() နှင့် transform() လုပ်ဆောင်ချက်များကို အသုံးပြုနည်း
ပန်ဒါ DataFrame တွင် groupby() နှင့် transform() လုပ်ဆောင်ချက်များကို အတူတကွအသုံးပြုရန် အောက်ပါနည်းလမ်းများကို အသုံးပြုနိုင်ပါသည်။
နည်းလမ်း 1- built-in လုပ်ဆောင်ချက်ဖြင့် groupby() နှင့် transform() ကိုသုံးပါ။
df[' new '] = df. groupby (' group_var ')[' value_var ']. transform (' mean ')
နည်းလမ်း 2- စိတ်ကြိုက်လုပ်ဆောင်ချက်ဖြင့် groupby() နှင့် transform() ကိုသုံးပါ။
df[' new '] = df. groupby (' group_var ')[' value_var ']. transform ( lambda x: some function)
အောက်ဖော်ပြပါနမူနာများသည် အောက်ပါ pandas DataFrame ဖြင့် လက်တွေ့တွင် နည်းလမ်းတစ်ခုစီကို အသုံးပြုနည်းကို ပြသသည်-
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' points ': [30, 22, 19, 14, 14, 11, 20, 28]}) #view DataFrame print (df) team points 0 to 30 1 to 22 2 to 19 3 to 14 4 B 14 5 B 11 6 B 20 7 B 28
ဥပမာ 1- built-in လုပ်ဆောင်ချက်ဖြင့် groupby() နှင့် transform() ကိုသုံးပါ။
အောက်ပါကုဒ်သည် mean_points ဟုခေါ်သော DataFrame သို့ ကော်လံအသစ်တစ်ခုထည့်ရန် groupby( ) နှင့် transform() လုပ်ဆောင်ချက်များကို မည်သို့အသုံးပြုရမည်ကို ပြသသည်-
#create new column called mean_points
df[' mean_points '] = df. groupby (' team ')[' points ']. transform (' mean ')
#view updated DataFrame
print (df)
team points mean_points
0 to 30 21.25
1 to 22 21.25
2 A 19 21.25
3 to 14 21.25
4 B 14 18.25
5 B 11 18.25
6 B 20 18.25
7 B 28 18.25
Team A ရှိ ကစားသမားများအတွက် ပျမ်းမျှအမှတ်တန်ဖိုးသည် 21.25 ဖြစ်ပြီး Team B ရှိ ကစားသမားများအတွက် ပျမ်းမျှအမှတ်တန်ဖိုးမှာ 18.25 ဖြစ်ပြီး၊ ထို့ကြောင့် ဤတန်ဖိုးများကို ကော်လံအသစ်တစ်ခုတွင် ကစားသမားတစ်ဦးစီအလိုက် သတ်မှတ်ပေးထားပါသည်။
အသင်းတစ်ခုစီအတွက် ရမှတ်ပေါင်းကိုပြသသည့် ကော်လံအသစ်တစ်ခုဖန်တီးရန် sum() ကဲ့သို့သော အခြား built-in လုပ်ဆောင်ချက်ကို အသုံးပြုနိုင်ကြောင်း သတိပြုပါ-
#create new column called sum_points
df[' sum_points '] = df. groupby (' team ')[' points ']. transform (' sum ')
#view updated DataFrame
print (df)
team points sum_points
0 to 30 85
1 to 22 85
2 A 19 85
3 to 14 85
4 B 14 73
5 B 11 73
6 B 20 73
7 B 28 73
အသင်း A ၏ ကစားသမားများ၏ ရမှတ်ပေါင်း 85 ဖြစ်ပြီး အသင်း B ၏ ကစားသမားများ၏ အမှတ်ပေါင်း 73 ဖြစ်သောကြောင့် ဤတန်ဖိုးများကို ကော်လံအသစ်တစ်ခုတွင် ကစားသမားတစ်ဦးစီအတွက် သတ်မှတ်ပေးထားပါသည်။
ဥပမာ 2- စိတ်ကြိုက်လုပ်ဆောင်ချက်ဖြင့် groupby() နှင့် transform() ကိုသုံးပါ။
အောက်ပါကုဒ်သည် သက်ဆိုင်ရာအသင်းများတွင် ကစားသမားတစ်ဦးစီမှ ရမှတ်စုစုပေါင်းရာခိုင်နှုန်းကို တွက်ချက်သည့် စိတ်ကြိုက်လုပ်ဆောင်ချက်ကို ဖန်တီးရန်အတွက် groupby( ) နှင့် transform() လုပ်ဆောင်ချက်များကို မည်သို့အသုံးပြုရမည်ကို ပြသသည်-
#create new column called percent_of_points
df[' percent_of_points '] = df. groupby (' team ')[' points ']. transform ( lambda x:x/ x.sum ())
#view updated DataFrame
print (df)
team points percent_of_points
0 A 30 0.352941
1 A 22 0.258824
2 A 19 0.223529
3 A 14 0.164706
4 B 14 0.191781
5 B 11 0.150685
6 B 20 0.273973
7 B 28 0.383562
ဤသည်မှာ ရလဒ်ကို မည်သို့အဓိပ္ပာယ်ဖွင့်ဆိုနိုင်သည်-
- Team A ၏ပထမဆုံးကစားသမားသည် Team A ၏ကစားသမားစုစုပေါင်း 85 ယောက်တွင် 30 မှတ်ရခဲ့သည်။ ထို့ကြောင့်၊ သူရမှတ်စုစုပေါင်းရာခိုင်နှုန်းမှာ 30/85 = 0.352941 ဖြစ်သည်။
- Team A ၏ဒုတိယကစားသမားသည် Team A ၏ကစားသမားများအနက်မှ 85 မှတ်အနက် 22 မှတ်ရခဲ့သည်။ ထို့ကြောင့် ၎င်း၏စုစုပေါင်းရမှတ်ရာခိုင်နှုန်းသည် 22/85 = 0.258824 ဖြစ်သည်။
နောက် … ပြီးတော့။
ကျွန်ုပ်တို့လိုချင်သော စိတ်ကြိုက်တွက်ချက်မှုများကို လုပ်ဆောင်ရန် transform() လုပ်ဆောင်ချက်တွင် lambda အငြင်းအခုံကို အသုံးပြုနိုင်ကြောင်း သတိပြုပါ။
ထပ်လောင်းအရင်းအမြစ်များ
အောက်ဖော်ပြပါ သင်ခန်းစာများသည် ပန်ဒါများတွင် အခြားဘုံလုပ်ဆောင်ချက်များကို မည်သို့လုပ်ဆောင်ရမည်ကို ရှင်းပြသည်-
Pandas တွင် GroupBy ပေါင်းစည်းနည်း
Pandas တွင် Groupby နှင့် Plot ကိုအသုံးပြုနည်း
Pandas ရှိ GroupBy ကို အသုံးပြု၍ ထူးခြားသောတန်ဖိုးများကို ရေတွက်နည်း