Pandas의 계층화된 샘플링(예제 포함)
연구자들은 종종 모집단에서 표본을 채취하고 표본의 데이터를 사용하여 모집단 전체에 대한 결론을 도출합니다.
일반적으로 사용되는 샘플링 방법은 계층화 무작위 샘플링 으로, 모집단을 그룹으로 나누고 각 그룹에서 특정 수의 구성원을 무작위로 선택하여 표본에 포함시킵니다.
이 튜토리얼에서는 Python에서 계층화된 무작위 샘플링을 수행하는 두 가지 방법을 설명합니다.
예 1: 개수를 사용한 계층화된 샘플링
서로 다른 두 팀의 농구 선수 8명에 대한 데이터가 포함된 다음과 같은 팬더 DataFrame이 있다고 가정합니다.
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: 비율을 사용한 층화 샘플링
서로 다른 두 팀의 농구 선수 8명에 대한 데이터가 포함된 다음과 같은 팬더 DataFrame이 있다고 다시 가정해 보겠습니다.
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
DataFrame의 플레이어 8명 중 6명(75%)은 A팀에 속하고 플레이어 8명 중 2명(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%)은 더 큰 DataFrame에서 A팀 플레이어의 비율과 일치합니다.
마찬가지로, 계층화된 샘플의 B팀 플레이어 비율(75%)은 더 큰 DataFrame의 B팀 플레이어 비율과 일치합니다.
추가 리소스
다음 튜토리얼에서는 Pandas를 사용하여 다른 샘플 유형을 선택하는 방법을 설명합니다.