Pandas: วิธีจัดกลุ่มสองคอลัมน์และรวมเข้าด้วยกัน


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้กับฟังก์ชัน groupby() ในแพนด้าเพื่อจัดกลุ่มตามสองคอลัมน์และรวมคอลัมน์อื่น:

 df. groupby ([' var1 ',' var2 '])[' var3 ']. mean ()

ตัวอย่างเฉพาะนี้จัดกลุ่ม DataFrame ตามคอลัมน์ var1 และ var2 จากนั้นคำนวณค่าเฉลี่ยของคอลัมน์ var3

ตัวอย่างต่อไปนี้แสดงวิธีการจัดกลุ่มในสองคอลัมน์และรวมโดยใช้ DataFrame แพนด้าต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'G', 'G', 'F'],
                   ' points ': [15, 22, 24, 25, 20, 35, 34, 19, 14, 12]})

#view DataFrame
print (df)

  team position points
0 AG 15
1 AG 22
2 AF 24
3 AF 25
4 AF 20
5 BG 35
6 BG 34
7 BG 19
8 BG 14
9 BF 12

ตัวอย่างที่ 1: จัดกลุ่มสองคอลัมน์แล้วคำนวณค่าเฉลี่ยของอีกคอลัมน์หนึ่ง

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อคำนวณค่าเฉลี่ยของคอลัมน์ คะแนน โดยจัดกลุ่มตามคอลัมน์ ทีม และ ตำแหน่ง :

 #calculate mean of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. mean ()

team position
AF23.0
      G 18.5
BF 12.0
      G 25.5
Name: points, dtype: float64

จากผลลัพธ์เราจะเห็นได้ว่า:

  • คะแนนเฉลี่ยของผู้เล่นจากทีม A ในตำแหน่ง F คือ 23
  • คะแนนเฉลี่ยของผู้เล่นทีม A ในตำแหน่ง G คือ 18.5

และอื่นๆ

ตัวอย่างที่ 2: จัดกลุ่มสองคอลัมน์และคำนวณค่าสูงสุดของคอลัมน์อื่น

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อคำนวณค่าสูงสุดของคอลัมน์ คะแนน โดยจัดกลุ่มตามคอลัมน์ ทีม และ ตำแหน่ง :

 #calculate max of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. max ()

team position
AF25
      G22
BF 12
      G 35
Name: points, dtype: int64

จากผลลัพธ์เราจะเห็นได้ว่า:

  • คะแนนสูงสุดสำหรับผู้เล่นในทีม A ในตำแหน่ง F คือ 25
  • คะแนนสูงสุดสำหรับผู้เล่นทีม A ในตำแหน่ง G คือ 22

และอื่นๆ

ตัวอย่างที่ 3: จัดกลุ่มตามสองคอลัมน์และนับจำนวนครั้ง

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อนับการเกิดขึ้นของแต่ละคอลัมน์ ทีม และ ตำแหน่ง :

 #count occurrences of each combination of team and position columns
df. groupby ([' team ', ' position ']). size ()

team position
AF3
      G2
BF 1
      G4
dtype: int64

จากผลลัพธ์เราจะเห็นได้ว่า:

  • มีผู้เล่น 3 คนในทีม A ในตำแหน่ง F
  • มีผู้เล่น 2 คนในทีม A ในตำแหน่ง G

และอื่นๆ

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ในแพนด้า:

วิธีนับค่าที่ไม่ซ้ำโดยใช้ Pandas GroupBy
วิธีใช้ฟังก์ชันกับ Pandas Groupby
วิธีสร้างพล็อตบาร์จาก Pandas GroupBy

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

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