นุ่น: วิธีจัดกลุ่มและรวมเป็นหลายคอลัมน์


บ่อยครั้งที่คุณอาจต้องการจัดกลุ่มและรวมหลายคอลัมน์ของ 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 หลายอัน

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *