Pandas: วิธีใช้ groupby กับ nlargest ()


คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อแสดงค่าที่ใหญ่ที่สุด n ตามกลุ่มใน DataFrame ของแพนด้า:

 #display two largest values by group
df. groupby (' group_var ')[' values_var ']. nlargest ( 2 )

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

 #find sum of two largest values by group
df. groupby (' group_var ')[' values_var ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับ Pandas DataFrame ต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [12, 29, 34, 14, 10, 11, 7, 36, 34, 22]})

#view DataFrame
print (df)

  team points
0 to 12
1 to 29
2 to 34
3 to 14
4 to 10
5 B 11
6 B 7
7 B 36
8 B 34
9 B 22

ตัวอย่างที่ 1: แสดงค่า N ที่ใหญ่ที่สุดตามกลุ่ม

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

 #display two largest points values grouped by team
df. groupby (' team ')[' points ']. nlargest ( 2 )

team   
At 2 34
      1 29
B 7 36
      8 34
Name: points, dtype: int64

ผลลัพธ์จะแสดงค่า คะแนน สูงสุดสองค่าสำหรับแต่ละ ทีม พร้อมด้วยตำแหน่งดัชนีใน DataFrame ดั้งเดิม

ตัวอย่างที่ 2: ดำเนินการกับค่า N ที่ใหญ่ที่สุดต่อกลุ่ม

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

 #calculate sum of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())

team
At 63
B70
Name: points, dtype: int64

ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:

  • ผลรวมของคะแนนสูงสุดสองคะแนนของทีม A คือ 63
  • ผลรวมของคะแนนสูงสุดสองคะแนนของทีม B คือ 70

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

 #calculate mean of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .mean ())

team
At 31.5
B 35.0
Name: points, dtype: float64

ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:

  • ค่าเฉลี่ยของสองแต้มสูงสุดของทีม A คือ 31.5
  • ค่าเฉลี่ยของสองแต้มสูงสุดของทีม B คือ 35.0

หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน GroupBy ได้ที่นี่

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

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

นุ่น: วิธีคำนวณผลรวมสะสมต่อกลุ่ม
Pandas: วิธีนับค่าที่ไม่ซ้ำตามกลุ่ม
Pandas: วิธีคำนวณโหมดตามกลุ่ม
นุ่น: วิธีคำนวณความสัมพันธ์ตามกลุ่ม

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

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