개요
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