นุ่น: วิธีจัดกลุ่มตามช่วงของค่า


คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อใช้ฟังก์ชัน groupby() ในแพนด้าเพื่อจัดกลุ่มคอลัมน์ตามช่วงของค่าก่อนที่จะดำเนินการรวม:

 df. groupby (pd. cut (df[' my_column '], [0, 25, 50, 75, 100])). sum ()

ตัวอย่างนี้จะจัดกลุ่มแถวของ DataFrame ตามช่วงของค่าต่อไปนี้ในคอลัมน์ที่เรียกว่า my_column :

  • (0.25]
  • (25, 50]
  • (50, 75]
  • (75, 100]

จากนั้นจะคำนวณผลรวมของค่าในคอลัมน์ทั้งหมดของ DataFrame โดยใช้ช่วงค่าเหล่านี้เป็นกลุ่ม

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: วิธีจัดกลุ่มตามช่วงค่าใน Pandas

สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ซึ่งมีข้อมูลเกี่ยวกับขนาดของร้านค้าปลีกต่างๆ และยอดขายรวม:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store_size ': [14, 25, 26, 29, 45, 58, 67, 81, 90, 98],
                   ' sales ': [15, 18, 24, 25, 20, 35, 34, 49, 44, 49]})

#view DataFrame
print (df)

   store_size sales
0 14 15
1 25 18
2 26 24
3 29 25
4 45 20
5 58 35
6 67 34
7 81 49
8 90 44
9 98 49

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อจัดกลุ่ม DataFrame ตามช่วงเฉพาะของคอลัมน์ store_size จากนั้นคำนวณผลรวมของคอลัมน์อื่นๆ ทั้งหมดใน DataFrame โดยใช้ช่วงเป็นกลุ่ม:

 #group by ranges of store_size and calculate sum of all columns
df. groupby (pd. cut (df[' store_size '], [0, 25, 50, 75, 100])). sum ()

	 store_size sales
store_size		
(0.25] 39 33
(25, 50] 100 69
(50, 75] 125 69
(75, 100] 269 142

จากผลลัพธ์เราจะเห็นได้ว่า:

  • สำหรับแถวที่มีค่า store_size ระหว่าง 0 ถึง 25 ผลรวมของ store_size คือ 39 และผลรวมของยอดขายคือ 33
  • สำหรับแถวที่มีค่า store_size ระหว่าง 25 ถึง 50 ผลรวมของ store_size คือ 100 และผลรวมของยอดขายคือ 69

และอื่นๆ

หากต้องการ คุณสามารถคำนวณเฉพาะผลรวมของ ยอดขาย สำหรับช่วง store_size แต่ละช่วงได้:

 #group by ranges of store_size and calculate sum of sales
df. groupby (pd. cut (df[' store_size '], [0, 25, 50, 75, 100]))[' sales ']. sum ()

store_size
(0.25] 33
(25, 50] 69
(50, 75] 69
(75, 100] 142
Name: sales, dtype: int64

คุณยังสามารถใช้ฟังก์ชัน NumPy arange() เพื่อแบ่งตัวแปรออกเป็นช่วงโดยไม่ต้องระบุจุดตัดแต่ละจุดด้วยตนเอง:

 import numpy as np

#group by ranges of store_size and calculate sum of sales
df. groupby (pd. cut (df[' store_size '], np. arange (0, 101, 25)))[' sales ']. sum ()

store_size
(0.25] 33
(25, 50] 69
(50, 75] 69
(75, 100] 142
Name: sales, dtype: int64

โปรดทราบว่าผลลัพธ์เหล่านี้ตรงกับตัวอย่างก่อนหน้า

หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน NumPy arange() ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ในแพนด้า:

Pandas: วิธีนับค่าที่ไม่ซ้ำโดยใช้ groupby
Pandas: วิธีคำนวณค่าเฉลี่ยและบรรทัดฐานของคอลัมน์ใน groupby
Pandas: วิธีใช้ as_index ใน groupby

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *