การสุ่มตัวอย่างแบบแบ่งชั้นในแพนด้า (พร้อมตัวอย่าง)


นักวิจัยมักจะเก็บ ตัวอย่าง จากประชากรและใช้ข้อมูลจากกลุ่มตัวอย่างเพื่อสรุปผลเกี่ยวกับประชากรโดยรวม

วิธีการสุ่มตัวอย่างที่ใช้กันทั่วไปคือ การสุ่มตัวอย่างแบบแบ่งชั้น โดยแบ่งประชากรออกเป็นกลุ่มๆ และสุ่มเลือกสมาชิกจำนวนหนึ่งจากแต่ละกลุ่มเพื่อรวมไว้ในตัวอย่าง

บทช่วยสอนนี้จะอธิบายสองวิธีในการสุ่มตัวอย่างแบบแบ่งชั้นใน Python

ตัวอย่างที่ 1: การสุ่มตัวอย่างแบบแบ่งชั้นโดยใช้การนับ

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

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})

#view DataFrame
df

        team position assists rebounds
0 A G 5 11
1 A G 7 8
2 A F 7 10
3 A G 8 6
4 B F 5 6
5 B F 7 9
6 B C 6 6
7 B C 9 10

รหัสต่อไปนี้แสดงวิธีการสุ่มตัวอย่างแบบแบ่งชั้นโดยการสุ่มเลือกผู้เล่น 2 คนจากแต่ละทีมเพื่อรวมไว้ในตัวอย่าง:

 df. groupby ('team', group_keys= False ). apply ( lambda x: x.sample (2))

        team position assists rebounds
0 A G 5 11
3 A G 8 6
6 B C 6 6
5 B F 7 9

โปรดทราบว่ามีผู้เล่นสองคนจากแต่ละทีมรวมอยู่ในกลุ่มตัวอย่างแบบแบ่งชั้น

ตัวอย่างที่ 2: การสุ่มตัวอย่างแบบแบ่งชั้นโดยใช้สัดส่วน

สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ ซึ่งมีข้อมูลเกี่ยวกับผู้เล่นบาสเก็ตบอล 8 คนจาก 2 ทีมที่แตกต่างกัน:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'],
                   'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})

#view DataFrame
df

        team position assists rebounds
0 A G 5 11
1 A G 7 8
2 A F 7 10
3 A G 8 6
4 B F 5 6
5 B F 7 9
6 B C 6 6
7 B C 9 10

โปรดทราบว่าผู้เล่น 6 คนจาก 8 คน (75%) ใน DataFrame อยู่ในทีม A และผู้เล่น 2 คนจาก 8 คน (25%) อยู่ในทีม B

รหัสต่อไปนี้แสดงวิธีการสุ่มตัวอย่างแบบแบ่งชั้นเพื่อให้สัดส่วนของผู้เล่นในกลุ่มตัวอย่างจากแต่ละทีมตรงกับสัดส่วนของผู้เล่นจากแต่ละทีมใน DataFrame ที่ใหญ่กว่า:

 import numpy as np

#define total sample size desired
N = 4

#perform stratified random sampling
df. groupby ('team', group_keys= False ). apply ( lambda x: x. sample (int(np. rint (N* len (x)/ len (df))))). sample (frac=1). reset_index (drop= True )

        team position assists rebounds
0 B F 7 9
1 B G 8 6
2 B C 6 6
3 A G 7 8

โปรดทราบว่าสัดส่วนของผู้เล่นทีม A ในกลุ่มตัวอย่างแบบแบ่งชั้น (25%) ตรงกับสัดส่วนของผู้เล่นทีม A ใน DataFrame ที่ใหญ่กว่า

ในทำนองเดียวกัน สัดส่วนของผู้เล่นทีม B ในกลุ่มตัวอย่างแบบแบ่งชั้น (75%) ตรงกับสัดส่วนของผู้เล่นทีม B ใน DataFrame ที่ใหญ่กว่า

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

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

วิธีดำเนินการสุ่มตัวอย่างคลัสเตอร์ใน Pandas
วิธีการสุ่มตัวอย่างอย่างเป็นระบบในหมู่แพนด้า

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

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