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를 사용하여 다른 샘플 유형을 선택하는 방법을 설명합니다.

Pandas에서 클러스터 샘플링을 수행하는 방법
팬더들 사이에서 체계적인 샘플링을 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다