Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

นับค่าเฉพาะ (unique values) ต่อกลุ่มใน Pandas ด้วย groupby().count()

แนวคิด

การนับจำนวนแถว (row count) ในแต่ละกลุ่มหลังจากจัดกลุ่มด้วย groupby() ทำได้โดยใช้ .count() หรือ .size() ความแตกต่างคือ .count() ไม่นับค่า NaN ส่วน .size() นับทุกแถว

ขั้นตอน

  1. สร้าง DataFrame ตัวอย่าง
  2. ใช้ groupby('column')['target_column'].count()
  3. แสดงผลลัพธ์

ตัวอย่างโค้ด

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'))