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

Python - ดึงชื่อค่าและจำนวนนับจาก value_counts() ใน Pandas

เมธอด 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 - เรียงจากน้อยไปมาก