Random seed로 샘플데이터 만들기

Ryan·2025년 1월 23일

Python/Pandas

목록 보기
3/23

Python에서 랜덤 데이터 생성과 Faker 라이브러리 활용하기

Python에서는 랜덤 데이터를 생성하거나 가짜 데이터를 만들어내는 다양한 방법이 있습니다. 이 글에서는 Python의 random 모듈과 Faker 라이브러리를 활용하여 랜덤 데이터와 가짜 데이터를 생성하는 방법을 정리합니다.


1. Python random 모듈

random 모듈은 난수(랜덤 숫자)를 생성하거나 리스트에서 무작위로 값을 선택하는 데 유용합니다.

1.1 randint() 함수

randint(a, b) 함수는 지정된 범위 [a, b] 사이의 정수를 반환합니다.

import random as rd

# 랜덤 숫자 생성
d.rd.seed(42)  # 시드 값 설정으로 동일한 랜덤 결과를 재현 가능
for _ in range(5):
    print(rd.randint(0, 10))

출력 예시:

10
1
0
4
3

1.2 리스트에서 무작위 값 선택

리스트에서 랜덤하게 값을 선택하려면 choice()choices() 함수를 사용합니다.

# 랜덤 성적 생성
grade = [l for l in 'ABCDF']

# 랜덤 선택 방법 1: randint 이용
for _ in range(5):
    print(grade[rd.randint(0, len(grade) - 1)])  # 인덱스로 접근

# 랜덤 선택 방법 2: choice 이용
for _ in range(5):
    print(rd.choice(grade))  # 리스트에서 직접 선택

# 여러 값을 선택
data = [rd.choice(grade) for _ in range(5)]
data = rd.choices(grade, k=5)  # choices는 k로 여러 개 선택 가능
print(data)

출력 예시:

C
F
A
B
D
['B', 'A', 'C', 'D', 'F']

2. Faker 라이브러리

Faker는 가짜 데이터를 쉽게 생성할 수 있는 강력한 라이브러리입니다. 이름, 직업, 주소 등 다양한 데이터를 생성할 수 있습니다.

2.1 Faker 설치

Faker를 사용하려면 먼저 설치가 필요합니다:

%pip install Faker

2.2 Faker 기본 사용법

Faker 객체를 생성하고, 원하는 데이터 타입을 호출하면 됩니다.

from faker import Faker

# Faker 객체 생성
fake = Faker('ko_KR')  # 한국어 로케일 설정
Faker.seed(42)  # 시드 값 설정

# 랜덤 데이터 생성
names = [fake.name() for _ in range(10)]        # 랜덤 이름
first_names = [fake.first_name() for _ in range(10)]  # 랜덤 이름 (성 제외)
jobs = [fake.job() for _ in range(10)]          # 랜덤 직업

# 결과 출력
print(names)
print(first_names)
print(jobs)

출력 예시:

['이민준', '박지훈', '김지훈', '이도윤', '김서준', '박준호', '최민재', '정서준', '한도윤', '박민준']
['민준', '지훈', '지훈', '도윤', '서준', '준호', '민재', '서준', '도윤', '민준']
['데이터 분석가', '웹 개발자', '시스템 관리자', '소프트웨어 엔지니어', '마케팅 전문가', '디자이너', 'DB 관리자', '프로젝트 매니저', 'AI 연구원', '네트워크 엔지니어']

주요 포인트

  1. random 모듈은 간단한 난수 생성과 리스트 랜덤 선택에 유용합니다.
  2. Faker는 복잡한 가짜 데이터를 생성할 때 매우 편리합니다.
  3. seed 값을 설정하면 동일한 랜덤 데이터를 재현할 수 있습니다.

예제 코드 통합

다음은 위에서 다룬 모든 내용을 하나의 코드로 통합한 예제입니다:

import random as rd
from faker import Faker

# random 모듈 사용
rd.seed(42)
for _ in range(5):
    print(rd.randint(0, 10))

grade = [l for l in 'ABCDF']
for _ in range(5):
    print(rd.choice(grade))

data = rd.choices(grade, k=5)
print(data)

# Faker 사용
fake = Faker('ko_KR')
Faker.seed(42)

names = [fake.name() for _ in range(10)]
first_names = [fake.first_name() for _ in range(10)]
jobs = [fake.job() for _ in range(10)]

print(names)
print(first_names)
print(jobs)

이 글을 통해 random 모듈과 Faker 라이브러리를 활용한 랜덤 데이터 생성 방법을 연습했습니다.

0개의 댓글