문제 상황
입력 — 다음과 같은 샘플 DataFrame이 있다고 가정해 보겠습니다.
Id Name
0 1 Adam
1 2 Michael
2 3 David
3 4 Jack
4 5 Peter
출력 —
임의로 선택된 행
Id 5
Name Peter
해결 방법
이 문제는 아래 단계를 따라 해결할 수 있습니다.
DataFrame을 정의합니다.
df.shape[0]을 사용해 전체 행 개수를 계산한 뒤rows변수에 저장합니다.random 모듈의
randrange메서드를 이용해random_row값을 설정합니다.
random_row = r.randrange(rows)
iloc슬라이싱 안에random_row를 적용하면 DataFrame에서 임의의 한 행을 추출할 수 있습니다.
df.iloc[random_row,:]
여기서 randrange(rows)는 0부터 rows-1 사이의 정수 중 하나를 무작위로 반환하며, 이 값이 곧 선택될 행의 인덱스가 됩니다. 또한 df.iloc[random_row, :]에서 콜론(:)은 해당 행의 모든 열을 가져오겠다는 의미입니다.
예제 코드
아래 예제를 통해 실제 동작을 자세히 살펴보겠습니다.
import pandas as pd
import random as r
data = { 'Id': [1,2,3,4,5],'Name': ['Adam','Michael','David','Jack','Peter']}
df = pd.DataFrame(data)
print("DataFrame is\n", df)
rows = df.shape[0]
print("total number of rows:-", rows)
random_row = r.randrange(rows)
print("print any random row is\n")
print(df.iloc[random_row,:])
실행 결과
DataFrame is
Id Name
0 1 Adam
1 2 Michael
2 3 David
3 4 Jack
4 5 Peter
total number of rows:- 5
print any random row is
Id 3
Name David
참고: sample() 메서드 활용하기
pandas에서는 df.sample(n=1)을 사용하는 더 간단한 방법도 있습니다. 이 메서드는 별도의 행 개수 계산 없이 한 줄로 임의의 행을 추출할 수 있어 코드가 훨씬 간결해집니다.
df.sample(n=1)