팬더스 데이터프레임에서 랜덤 행 선택하기: Python, Pandas, Random 라이브러리 활용
sample() 함수 사용
sample()
함수는 Pandas에서 가장 일반적으로 사용되는 랜덤 행 선택 도구입니다. 이 함수는 다음과 같은 매개변수를 가집니다:
n
: 선택할 행의 수 (기본값은 1)replace
: 동일한 행을 여러 번 선택할 수 있는지 여부 (기본값은 False)random_state
: 무작위 시드 값 (동일한 시드를 사용하면 항상 동일한 행을 선택합니다.)
다음은 sample()
함수를 사용하여 데이터프레임에서 3개의 랜덤 행을 선택하는 예제입니다.
import pandas as pd
import numpy as np
np.random.seed(10) # 무작위 시드 설정
# 데이터프레임 생성
df = pd.DataFrame({'A': range(10), 'B': range(10, 20)})
# 3개의 랜덤 행 선택
random_rows = df.sample(n=3, random_state=10)
print(random_rows)
위 코드는 다음과 같은 결과를 출력합니다.
A B
0 5 15
1 9 19
7 7 17
numpy.random.permutation() 함수 사용
numpy.random.permutation()
함수는 NumPy에서 제공하는 무작위 순열 생성 함수입니다. Pandas 데이터프레임에서 랜덤 행을 선택하기 위해서는 다음과 같이 loc
함수와 함께 사용할 수 있습니다.
다음은 numpy.random.permutation()
함수를 사용하여 데이터프레임에서 랜덤 행을 선택하는 예제입니다.
import pandas as pd
import numpy as np
np.random.seed(10)
# 데이터프레임 생성
df = pd.DataFrame({'A': range(10), 'B': range(10, 20)})
# 행 인덱스 무작위로 셔플
random_indices = np.random.permutation(df.index)
# 셔플된 인덱스로 랜덤 행 선택
random_rows = df.loc[random_indices[:3]]
print(random_rows)
위 코드는 sample()
함수와 동일한 결과를 출력합니다.
결론
sample()
함수와 numpy.random.permutation()
함수는 Pandas 데이터프레임에서 랜덤 행을 선택하는 데 사용할 수 있는 두 가지 주요 방법입니다. sample()
함수는 사용하기 쉽고 직관적이지만, numpy.random.permutation()
함수는 더 유연하고 제어력이 뛰어납니다.
예제 코드: Pandas 데이터프레임에서 랜덤 행 선택하기
sample() 함수 사용 예제
import pandas as pd
import numpy as np
# 데이터프레임 생성
df = pd.DataFrame({'A': range(10), 'B': range(10, 20)})
# 1. 특정 개수의 랜덤 행 선택
print("1. 특정 개수의 랜덤 행 선택")
random_rows = df.sample(n=3)
print(random_rows)
# 2. 데이터프레임의 특정 비율로 랜덤 행 선택
print("\n2. 데이터프레임의 특정 비율로 랜덤 행 선택")
random_rows = df.sample(frac=0.2) # 20%의 행을 선택
print(random_rows)
# 3. 동일한 행이 여러 번 선택될 수 있도록 설정
print("\n3. 동일한 행이 여러 번 선택될 수 있도록 설정")
random_rows = df.sample(n=3, replace=True)
print(random_rows)
# 4. 무작위 시드 설정하여 동일한 결과 재현
print("\n4. 무작위 시드 설정하여 동일한 결과 재현")
np.random.seed(10)
random_rows = df.sample(n=3, random_state=10)
print(random_rows)
numpy.random.permutation() 함수 사용 예제
import pandas as pd
import numpy as np
# 데이터프레임 생성
df = pd.DataFrame({'A': range(10), 'B': range(10, 20)})
# 1. 행 인덱스 무작위로 셔플
print("1. 행 인덱스 무작위로 셔플")
random_indices = np.random.permutation(df.index)
print(random_indices)
# 2. 셔플된 인덱스로 랜덤 행 선택
print("\n2. 셔플된 인덱스로 랜덤 행 선택")
random_rows = df.loc[random_indices[:3]]
print(random_rows)
# 3. 특정 열 기준으로 랜덤 행 선택
print("\n3. 특정 열 기준으로 랜덤 행 선택")
random_rows = df.loc[np.random.permutation(df['A'])[:3]]
print(random_rows)
본 예제 코드는 sample()
함수와 numpy.random.permutation()
함수를 사용하여 다양한 방식으로 Pandas 데이터프레임에서 랜덤 행을 선택하는 방법을 보여줍니다.
Pandas 데이터프레임에서 랜덤 행 선택: 대체 방법
.iloc 인덱싱 사용
iloc
인덱싱을 사용하면 행 위치를 기반으로 특정 행을 선택할 수 있습니다. 무작위 행 위치를 생성하려면 numpy.random.randint()
함수를 사용할 수 있습니다.
import pandas as pd
import numpy as np
# 데이터프레임 생성
df = pd.DataFrame({'A': range(10), 'B': range(10, 20)})
# 랜덤 행 위치 생성
random_indices = np.random.randint(0, len(df), 3) # 3개의 랜덤 행 위치 생성
# 랜덤 행 선택
random_rows = df.iloc[random_indices]
print(random_rows)
.query() 메서드 사용
query()
메서드를 사용하면 조건식을 사용하여 데이터프레임에서 행을 필터링할 수 있습니다. 랜덤 행을 선택하려면 np.random.choice()
함수를 사용하여 조건식을 무작위로 생성할 수 있습니다.
import pandas as pd
import numpy as np
# 데이터프레임 생성
df = pd.DataFrame({'A': range(10), 'B': range(10, 20)})
# 랜덤 조건 생성
random_condition = np.random.choice(['A > 5', 'B < 15'])
# 랜덤 조건에 맞는 행 선택
random_rows = df.query(random_condition)
print(random_rows)
리스트 추출 사용
리스트 추출을 사용하여 데이터프레임에서 행을 반복하고 랜덤하게 선택할 수 있습니다.
import pandas as pd
import numpy as np
# 데이터프레임 생성
df = pd.DataFrame({'A': range(10), 'B': range(10, 20)})
# 랜덤 행 선택
random_rows = []
for i in range(3):
random_row = df.iloc[np.random.randint(0, len(df))]
random_rows.append(random_row)
random_rows = pd.DataFrame(random_rows)
print(random_rows)
결론
python pandas random