Python/NumPy | Pandas

[Python] Pandas - DataFrame 랜덤 추출 (샘플링)

비번변경 2023. 1. 27. 00:22

개요

2023.01.22 - [Python] 리스트 랜덤 추출 (샘플링)와 비슷하게 이 글에서는 DataFrame에서 데이터를 무작위로 추출하는 방법에 대해 알아본다.

 

 

DataFrame.sample

DataFrame에서 무작위로 몇 개의 값을 출력하는 함수이다.

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

 

매개변수는 다음과 같다.

  • n : 추출할 개수. frac 매개변수와 동시에 사용할 수 없다.
  • frac : 추출할 비율. 1 이하의 값을 설정하며 n과 동시에 사용할 수 없다.
  • replace : 중복 샘플링 허용 여부.
  • weight : 샘플링할 데이터와 동일한 길이의 Series를 샘플링에 사용할 가중치로 전달한다.
  • random_state : seed를 설정할 수 있다. 임의 값을 지정하면 항상 같은 값을 반환한다.
  • axis : 추출할 축을 지정한다.
  • ignore_index : True이면 반환 데이터프레임 인덱스를 초기화한다.

 

 

중복 없이 n개 추출

별다른 옵션을 사용하지 않으면 매개변수로 넘긴 n개의 데이터를 추출한다.

pd.DataFrame(range(10)).sample(3)

# 실행 결과
   0
6  6
8  8
3  3

 

 

중복을 허용하며 n개 추출

replace 매개변수를 True로 설정하면 샘플링 시 중복을 허용한다.

pd.DataFrame(range(10)).sample(13, replace=True)

# 실행 결과
   0
1  1
0  0
8  8
0  0
5  5
3  3
5  5
7  7
2  2
9  9
4  4
1  1
3  3

 

 

결과 DataFrame index 초기화

샘플링한 결과 DataFrame에서 index 값을 유지할 필요가 없다면 ignore_index 매개변수를 이용해 초기화한다.

pd.DataFrame(range(10)).sample(3, ignore_index=True)

# 실행 결과
   0
0  7
1  1
2  0

 

 

참고 문서

https://rfriend.tistory.com/602

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sample.html