นุ่น: วิธีจัดกลุ่มและรวมเป็นหลายคอลัมน์
บ่อยครั้งที่คุณอาจต้องการจัดกลุ่มและรวมหลายคอลัมน์ของ DataFrame ของแพนด้า
โชคดีที่ทำได้ง่ายโดยใช้ฟังก์ชัน pandas .groupby() และ .agg()
บทช่วยสอนนี้จะอธิบายตัวอย่างการใช้งานฟังก์ชันเหล่านี้ในทางปฏิบัติหลายตัวอย่าง
ตัวอย่างที่ 1: จัดกลุ่มตามสองคอลัมน์แล้วหาค่าเฉลี่ย
สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]}) #view DataFrame print (df) team position assists rebounds 0 AG 5 11 1 BG 7 8 2 BF 7 10 3 BG 8 6 4 BF 5 6 5 MF 7 9 6 MC 6 6 7 MC 9 10
รหัสต่อไปนี้แสดงวิธีจัดกลุ่มตามคอลัมน์ “ทีม” และ “ตำแหน่ง” และค้นหาการส่งบอลโดยเฉลี่ย:
df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () team position assists mean 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
ผลลัพธ์บอกเราว่า:
- แอสซิสต์เฉลี่ยสำหรับผู้เล่นในตำแหน่ง G ของทีม A คือ 5.0
- แอสซิสต์เฉลี่ยสำหรับผู้เล่นในตำแหน่ง F ในทีม B คือ 6.0
- แอสซิสต์เฉลี่ยสำหรับผู้เล่นในตำแหน่ง G ของทีม B คือ 7.5
และอื่นๆ
นอกจากนี้เรายังสามารถใช้รหัสต่อไปนี้เพื่อเปลี่ยนชื่อคอลัมน์ของ DataFrame ที่ได้:
#group by team and position and find mean assists new = df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () #rename columns new.columns = ['team', 'pos', 'mean_assists'] #view DataFrame print (new) team pos mean_assists 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
ตัวอย่างที่ 2: จัดกลุ่มตามสองคอลัมน์และค้นหาสถิติหลายรายการ
สมมติว่าเรากำลังใช้ DataFrame แพนด้าตัวเดียวกันกับตัวอย่างก่อนหน้านี้:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})
รหัสต่อไปนี้แสดงวิธีค้นหาค่ามัธยฐานและจำนวนรีบาวด์สูงสุด ซึ่งจัดกลุ่มไว้ในคอลัมน์ “ทีม” และ “ตำแหน่ง”:
df. groupby (['team', 'position']). agg ({'rebounds': ['median', 'max']}). reset_index () team position rebounds median max 0 A G 11 11 1 B F 8 10 2 B G 7 8 3 M C 8 10 4 M F 9 9
ผลลัพธ์บอกเราว่า:
- ค่ามัธยฐานการรีบาวด์ของผู้เล่นในตำแหน่ง G ของทีม A คือ 11
- การรีบาวด์สูงสุดสำหรับผู้เล่นในตำแหน่ง G ของทีม A คือ 11
- ค่ามัธยฐานการรีบาวด์ของผู้เล่นในตำแหน่ง F ของทีม B คือ 8
- การรีบาวด์สูงสุดสำหรับผู้เล่นในตำแหน่ง F ของทีม B คือ 10
และอื่นๆ
แหล่งข้อมูลเพิ่มเติม
วิธีกรอง Pandas DataFrame ในหลายเงื่อนไข
วิธีนับค่าที่หายไปใน Pandas DataFrame
วิธีซ้อน Pandas DataFrames หลายอัน