เมธอด value_counts() คืนค่าเป็น Series ที่มี index = ค่าที่ไม่ซ้ำกัน และ values = จำนวนครั้งที่ปรากฏ (frequency) บทความนี้สาธิตวิง่ายๆ ในการแยก "ชื่อค่า" และ "จำนวนนับ" ออกจากกัน
ขั้นตอนการทำงาน
1. สร้าง DataFrame ตัวอย่าง
import pandas as pd
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]
})
2. ใช้ value_counts() บนคอลัมน์ที่ต้องการ
# สำหรับคอลัมน์ Car
car_counts = dataFrame['Car'].value_counts()
print(car_counts)
# สำหรับคอลัมน์ Units Sold
units_counts = dataFrame['Units Sold'].value_counts()
print(units_counts)
โค้ดตัวอย่างสมบูรณ์
import pandas as pd
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)
# value_counts สำหรับ Car
res = dataFrame['Car'].value_counts()
print("\nValue names and counts from Car column:\n", res)
# value_counts สำหรับ Units Sold
res = dataFrame['Units Sold'].value_counts()
print("\nValue names and counts from Units Sold column:\n", res)
ผลลัพธ์
Value names and counts from Car column:
Mustang 2
Tesla 2
Audi 1
BMW 1
Mercedes 1
Name: Car, dtype: int64
Value names and counts from Units Sold column:
120 2
150 1
220 1
210 1
250 1
200 1
Name: Units Sold, dtype: int64
วิธีแยก Index และ Values ออกจากกัน
vc = dataFrame['Car'].value_counts()
# ดึงชื่อค่า (index)
value_names = vc.index.tolist()
# ดึงจำนวนนับ (values)
counts = vc.values.tolist()
print("Names:", value_names)
print("Counts:", counts)
# หรือแปลงเป็น DataFrame
vc_df = vc.reset_index()
vc_df.columns = ['Value', 'Count']
print(vc_df)
ผลลัพธ์การแยก
Names: ['Mustang', 'Tesla', 'Audi', 'BMW', 'Mercedes']
Counts: [2, 2, 1, 1, 1]
Value Count
0 Mustang 2
1 Tesla 2
2 Audi 1
3 BMW 1
4 Mercedes 1
พารามิเตอร์ที่น่าสนใจ
normalize=True- แสดงเป็นสัดส่วน (percentage) แทนจำนวนนับdropna=False- รวม NaN ในการนับด้วยsort=True- เรียงลำดับจากมากไปน้อย (default)ascending=True- เรียงจากน้อยไปมาก