แนวคิดพื้นฐาน
เมธอด value_counts() ใน Pandas ใช้สำหรับนับจำนวนครั้งที่ค่าแต่ละค่าปรากฏในคอลัมน์ (Series) ผลลัพธ์ที่ได้คือ Series ที่มีค่าเป็นดัชนี (index) และจำนวนเป็นค่า (values) เรียงลำดับจากมากไปน้อย
ตัวอย่างโค้ดเต็ม
import pandas as pd
# สร้าง DataFrame ตัวอย่าง
dataFrame = pd.DataFrame({
"Car": ['BMW', 'Mustang', 'Tesla', 'Mustang', 'Mercedes', 'Tesla', 'Audi'],
"Cubic Capacity": [2000, 1800, 1500, 2500, 2200, 3000, 2000],
"Reg Price": [7000, 1500, 5000, 8000, 9000, 6000, 1500],
"Units Sold": [200, 120, 150, 120, 210, 250, 220]
})
print("DataFrame:\n", dataFrame)
# ดึงชื่อค่าและจำนวนจากคอลัมน์ Car
res = dataFrame['Car'].value_counts()
print("\nชื่อค่าและจำนวนจากคอลัมน์ Car:\n", res)
# ดึงชื่อค่าและจำนวนจากคอลัมน์ Units Sold
res = dataFrame['Units Sold'].value_counts()
print("\nชื่อค่าและจำนวนจากคอลัมน์ Units Sold:\n", res)
ผลลัพธ์
DataFrame:
Car Cubic Capacity Reg Price Units Sold
0 BMW 2000 7000 200
1 Mustang 1800 1500 120
2 Tesla 1500 5000 150
3 Mustang 2500 8000 120
4 Mercedes 2200 9000 210
5 Tesla 3000 6000 250
6 Audi 2000 1500 220
ชื่อค่าและจำนวนจากคอลัมน์ Car:
Mustang 2
Tesla 2
Audi 1
BMW 1
Mercedes 1
Name: Car, dtype: int64
ชื่อค่าและจำนวนจากคอลัมน์ Units Sold:
120 2
150 1
220 1
210 1
250 1
200 1
Name: Units Sold, dtype: int64
การเข้าถึงค่าแยกส่วน
หากต้องการแยกชื่อค่า (index) และจำนวน (values) ออกมาเป็นลิสต์หรืออาร์เรย์ ให้ใช้:
values = res.index.tolist() # รายการชื่อค่า
counts = res.values.tolist() # รายการจำนวน
หมายเหตุ
value_counts()ข้ามค่า NaN โดยอัตโนมัติ (ใช้dropna=Falseเพื่อรวม NaN)- สามารถใช้
normalize=Trueเพื่อได้สัดส่วนแทนจำนวน - ทำงานได้กับคอลัมน์ประเภทข้อมูลทุกชนิด (ตัวเลข, สตริง, วันที่, ฯลฯ)