แนวคิด
การนับจำนวนแถว (row count) ในแต่ละกลุ่มหลังจากจัดกลุ่มด้วย groupby() ทำได้โดยใช้ .count() หรือ .size() ความแตกต่างคือ .count() ไม่นับค่า NaN ส่วน .size() นับทุกแถว
ขั้นตอน
- สร้าง DataFrame ตัวอย่าง
- ใช้
groupby('column')['target_column'].count() - แสดงผลลัพธ์
ตัวอย่างโค้ด
import pandas as pd
df = pd.DataFrame({
"id": [1, 2, 1, 3, 5, 1, 4, 3, 6, 7],
'rank': [1, 4, 1, 2, 1, 4, 6, 1, 5, 3]
})
print("Input DataFrame:\n", df)
# นับจำนวน id ต่อแต่ละ rank
count = df.groupby('rank')['id'].count()
print("\nความถี่ของแต่ละ rank:\n", count)
ผลลัพธ์
Input DataFrame:
id rank
0 1 1
1 2 4
2 1 1
3 3 2
4 5 1
5 1 4
6 4 6
7 3 1
8 6 5
9 7 3
ความถี่ของแต่ละ rank:
rank
1 4
2 1
3 1
4 2
5 1
6 1
Name: id, dtype: int64
วิธีอื่นๆ
# ใช้ size() นับทุกแถว (รวม NaN)
df.groupby('rank').size()
# นับค่า unique จริง (nunique) ต่อกลุ่ม
df.groupby('rank')['id'].nunique()
# นับหลายคอลัมน์พร้อมกัน
df.groupby('rank').agg(count_id=('id', 'count'), unique_id=('id', 'nunique'))