Skillset/Python

python sample 함수 사용법과 예제

Everly. 2022. 7. 4. 07:14

sample 함수는 파이썬의 내장 함수이다.

보통 어떠한 데이터프레임에서 랜덤하게 n개의 데이터(인덱스)를 뽑아야 할 때 사용한다. 

 

DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None, ignore_index=False)

 

  • n: 추출할 개수
  • frac: 추출할 비율, 1보다 작은 값으로 설정 (ex. 절반을 뽑는다면 0.5) 
    • n과 frac은 동시에 사용 불가능
  • replace: 중복 추출 허용 여부, True로 지정 시 중복을 허용하여 추출 
  • weights: 가중치로, 레이블별 추출될 확률 지정 가능
  • random_state: 시드(seed)로, 원하는 숫자 지정 시 항상 같은 결과 출력
  • axis: 0(index), 1(columns)
  • ignore_index: True로 지정 시 인덱스 초기화 

 

print(len(df))
display(df.head())

 

df라는 데이터에 랜덤하게 300개를 추출해보자.

실행할 때마다 결과가 다르게 나온다. (인덱스 부분 확인)

 

# 실행할때마다 결과가 다름 
df.sample(300)

 

# random_state

실행결과를 일정하게 고정하고 싶은 경우 random_state를 사용한다.

 

df.sample(300, random_state = 99)

 

# n

개수에는 무조건 숫자 형태로만 쓸 수 있는 것은 아니다. 결과값이 숫자이면 된다.

 

print(round(len(df)*0.3729))

df.sample(round(len(df)*0.3729), random_state = 99)

 

round 함수를 사용해서 결과값을 정수로 만들어야 한다. 그냥 사용하면 소수점 형태이므로 에러가 난다.

 

# frac

디폴트는 n(개수)지만, 비율로도 설정할 수 있다. frac 옵션을 사용하자. 

 

print(len(df)*.5)

df의 절반인 0.5의 비율만큼 뽑는다면 656.5개이다.

 

df.sample(frac = 0.5, random_state = 99)

 

소수점은 버림하여 656개가 뽑혔다.

 

# replace

replace = True 설정 시 중복을 포함해서 랜덤하게 뽑는다.

 

df.sample(round(len(df)*0.3729), replace = True, random_state = 99)

new = df.sample(round(len(df)*0.3729), replace = True, random_state = 99)
new.duplicated().sum()

 

중복이 몇 개나 나왔는지를 판단하려면 duplicated 함수를 사용하자. 92개의 중복된 행이 있다.

 

# ignore_index

ignore_index = True 설정 시 인덱스가 모두 초기화된다.

 

df.sample(round(len(df)*0.3729), random_state = 99, ignore_index = True)

반응형