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

วิธีใช้ GroupBy นับค่าใน Pandas DataFrame


เพื่อนับจำนวนค่า (value counts) แบบจัดกลุ่ม ใช้เมธอด groupby(), size() และ unstack() ของ DataFrame ก่อนอื่นสร้าง DataFrame 3 คอลัมน์

dataFrame = pd.DataFrame({
    'Product Category': ['Computer', 'Mobile Phone', 'Electronics', 'Electronics', 'Computer', 'Mobile Phone'],
    'Product Name': ['Keyboard', 'Charger', 'SmartTV', 'Camera', 'Graphic Card', 'Earphone'],
    'Quantity': [10, 50, 10, 20, 25, 50]})

จัดกลุ่มและนับ แล้ว unstack เพื่อทำให้คอลัมน์ Quantity กลายเป็นหัวคอลัมน์ใหม่

dataFrame = dataFrame.groupby(['Product Category', 'Product Name', 'Quantity']).size().unstack(fill_value=0)

ตัวอย่างสมบูรณ์

import pandas as pd
# create a dataframe with 3 columns
dataFrame = pd.DataFrame({
    'Product Category': ['Computer', 'Mobile Phone', 'Electronics', 'Electronics', 'Computer', 'Mobile Phone'],
    'Product Name': ['Keyboard', 'Charger', 'SmartTV', 'Camera', 'Graphic Card', 'Earphone'],
    'Quantity': [10, 50, 10, 20, 25, 50]})
# dataframe
print("Dataframe...\n", dataFrame)
# count and unstack
dataFrame = dataFrame.groupby(['Product Category', 'Product Name', 'Quantity']).size().unstack(fill_value=0)
print("\nResultant DataFrame...\n", dataFrame)

ผลลัพธ์

Dataframe...
  Product Category  Product Name  Quantity
0        Computer      Keyboard        10
1     Mobile Phone      Charger        50
2      Electronics      SmartTV        10
3      Electronics       Camera        20
4        Computer  Graphic Card        25
5     Mobile Phone     Earphone        50
Resultant DataFrame...
Quantity                  10  20  25  50
Product Category Product Name
Computer         Graphic Card   0   0   1   0
                 Keyboard       1   0   0   0
Electronics      Camera         0   1   0   0
                 SmartTV        1   0   0   0
Mobile Phone     Charger        0   0   0   1
                 Earphone       0   0   0   1