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)
반응형
'Skillset > Python, Git' 카테고리의 다른 글
[pandas] 범주형 데이터 2개를 비교하는 교차분석표(crosstab, 크로스탭) 알아보기 (0) | 2022.07.10 |
---|---|
[시각화] 파이썬 그래프 위에 글자 쓰기 (ax.patches, ax.text) (0) | 2022.07.09 |
[pandas] Series & DataFrame에서 자주 사용하는 유용한 메서드 (2) (0) | 2022.06.27 |
[pandas] Series & DataFrame에서 자주 사용하는 유용한 메서드 (1) (0) | 2022.06.27 |
파이썬 데이터프레임 인덱싱하기 - python dataframe indexing, slicing (0) | 2022.06.23 |