วิธีใช้ฟังก์ชันกับ pandas groupby
คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อใช้ฟังก์ชัน groupby() และ Apply() ร่วมกันใน DataFrame ของ pandas:
df. groupby (' var1 '). apply ( lambda x: some function)
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ไวยากรณ์นี้ในทางปฏิบัติกับ Pandas DataFrame ต่อไปนี้:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B'], ' points_for ': [18, 22, 19, 14, 11, 20, 28], ' points_against ': [14, 21, 19, 14, 12, 20, 21]}) #view DataFrame print (df) team points_for points_against 0 to 18 14 1 To 22 21 2 A 19 19 3 B 14 14 4 B 11 12 5 B 20 20 6 B 28 21
ตัวอย่างที่ 1: ใช้ groupby() และ Apply() เพื่อค้นหาความถี่สัมพัทธ์
รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน groupby( ) และ Apply() เพื่อค้นหาความถี่สัมพัทธ์ของแต่ละชื่อทีมใน Pandas DataFrame:
#find relative frequency of each team name in DataFrame
df. groupby (' team '). apply ( lambda x:x[' team ']. count ()/ df.shape [0])
team
A 0.428571
B 0.571429
dtype:float64
จากผลลัพธ์จะพบว่าทีม A ปรากฏใน 42.85% ของแถวทั้งหมด และทีม B ปรากฏใน 57.14% ของแถวทั้งหมด
ตัวอย่างที่ 2: ใช้ groupby() และ Apply() เพื่อค้นหาค่าสูงสุด
รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน groupby( ) และ Apply() เพื่อค้นหาค่า “points_for” สูงสุดสำหรับแต่ละทีม:
#find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x:x[' points_for ']. max ())
team
At 22
B28
dtype: int64
จากผลลัพธ์เราจะเห็นว่าคะแนนสูงสุดที่ทีม A ทำได้คือ 22 และคะแนนสูงสุดที่ทีม B ทำได้คือ 28
ตัวอย่างที่ 3: ใช้ groupby() และ Apply() เพื่อทำการคำนวณแบบกำหนดเอง
รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน groupby( ) และ Apply() เพื่อค้นหาความแตกต่างโดยเฉลี่ยระหว่าง “points_for” และ “points_against” สำหรับแต่ละทีม:
#find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x: (x[' points_for '] - x[' points_against ']). mean ())
team
A 1.666667
B 1.500000
dtype:float64
จากผลลัพธ์ เราจะเห็นว่าความแตกต่างโดยเฉลี่ยระหว่าง “แต้มสำหรับ” และ “แต้มต่อ” คือ 1.67 สำหรับทีม A และ 1.50 สำหรับทีม B
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่น ๆ ในแพนด้า:
วิธีดำเนินการผลรวม GroupBy ใน Pandas
วิธีใช้ Groupby และ Plot ใน Pandas
วิธีนับค่าที่ไม่ซ้ำโดยใช้ GroupBy ใน Pandas