넘파이의 난수 생성 함수
데이터 분석 및 처리 과정에서 랜덤 샘플 데이터를 생성하는 것은 유용한 기법입니다. 특히 판다스(Pandas)와 넘파이(Numpy)를 결합하면 다양한 방식으로 난수를 생성하여 데이터 프레임을 쉽게 구성할 수 있습니다. 초심자는 샘플을 만들어서 코드를 점검하지 않기 때문에, 이 함수들의 가치를 알기 어렵지만 여러분의 코딩이 성장하면 가치를 알게 됩니다.
넘파이의 난수 생성 함수
넘파이는 다양한 난수 생성 함수를 제공하며, 이를 활용하면 특정 분포에 따라 난수 배열을 만들 수 있습니다. 판다스 데이터 프레임을 생성할 때 자주 사용되는 주요 함수는 다음과 같습니다. 참고로 아래 함수들은 모두 np.random으로 시작합니다.
- rand: 0부터 1 사이의 균일 분포를 따르는 난수를 생성합니다.
np.random.rand(d1, d2, ..., dn)
# 3행 × 2열의 0~1 사이의 난수 생성
np.random.rand(3, 2)
- randn: 표준 정규 분포를 따르는 난수를 생성합니다.
np.random.randn(d1, d2, ..., dn)
# 3행 × 2열의 표준 정규 분포 난수 생성
np.random.randn(3, 2)
- randint: 지정된 범위 내에서 정수 난수를 생성합니다.
np.random.randint(low, high, size)
# 3행 × 2열의 10 이상 20 미만의 정수 난수 생성
np.random.randint(10, 20, (3, 2))
- choice: 주어진 리스트에서 특정 확률에 따라 무작위로 값을 선택해 배열을 생성합니다.
np.random.choice(a, size, p)
# 3행 × 2열의 데이터를 생성하되 A는 0.3, B는 0.7의 확률로 선택
np.random.choice(['A', 'B'], size=(3, 2), p=[0.3, 0.7])
- seed: 난수 생성을 위한 시드를 고정하여 동일한 난수 배열을 재현할 수 있습니다.
np.random.seed(n)
# 시드를 0으로 설정하여 랜덤 샘플링을 재현 가능하도록 함
np.random.seed(0)
난수를 이용한 데이터 프레임 생성
이제 choice 함수와 randint 함수를 사용하여 난수로 구성된 샘플 데이터 프레임을 생성해 보겠습니다. 먼저 난수의 재현성을 확보하기 위해 시드를 설정한 후, choice 함수로 특정 확률에 따라 반 열을 생성하고, randint 함수로 국어와 영어 점수는 정수 난수로 설정합니다.
import pandas as pd
import numpy as np
# 난수 시드 고정
np.random.seed(0)
# 데이터 프레임 생성
data = {
'반': np.random.choice(['A', 'B'], size=5, p=[0.6, 0.4]),
'국어': np.random.randint(60, 100, 5),
'영어': np.random.randint(30, 70, 5)
}
df = pd.DataFrame(data)
난수 시드를 지정했기 때문에, 위 코드로 여러분도 동일한 데이터 프레임을 재현할 수 있습니다.
초심자들은 이 함수들이 불필요하다고 느낄 수 있지만, 샘플로 코드를 테스트하는 것은 코딩에서 필수적이므로 이 함수들은 매우 유용합니다.
교보문고 구매 페이지, 알라딘 구매 페이지, yes24 구매 페이지
유튜브에서 판다스 강의 중입니다.
https://www.youtube.com/@KimPandas
'판다스 > 판다스에 유용한 넘파이 함수들' 카테고리의 다른 글
[numpy] np.sort 함수로 행이나 열의 개별적 정렬 (4) | 2024.10.26 |
---|---|
[numpy] np.fmax와 np.fmin 함수를 이용해 배열 비교 (4) | 2024.10.26 |
[numpy] np.select 함수로 불리언 마스킹 (3) | 2024.10.26 |
[numpy] np.where 함수로 불리언 마스킹 (3) | 2024.10.26 |