본문 바로가기

Python

random.sample() 사용하여 무작위 데이터 생성하기(random, sample, join, while)

업무 중에 python을 통해서 테이블을 생성하고 무작위 데이터를 적재하고자 하는 Needs가 있었다.

random 모듈을 사용하였으며, while문을 통해서 쿼리를 한 건씩 생성해 실행해주는 방식이라 소요시간이 길다는 단점이 있으니 참고.


random.sample(sequence, k)

random 모듈의 sample() method는 sequence에서 지정된 수(k)의 항목을 무작위로 선택한 목록을 반환한다.

cf. sequence : list, set, range etc...

mylist = ["blue","pink","red","yellow","green"]

smplColor = random.sample(mylist, 2)
print(smplColor)

#result#
#['yellow', 'pink']

string.join(iterable)

join() method는 iterable의 모든 항목을 가져와 하나의 문자열로 결합한다.

colorJoin1 = '+'.join(smplColor) # +로 요소 연결
print(olorJoin1)

#result#
#yellow+pink

colorJoin2 = ''.join(smplColor) #공백으로 요소 연결
print(colorJoin2)
#result#
#yellowpink

무작위 데이터 생성 Example

1. random & datetime import

오늘 날짜를 yyyy-MM-dd 형식으로 넣어줄 것이므로 datetime도 import 해준다.

import random
from datetime import datetime

2. 무작위 데이터 생성 및 Insert 실행

- 알파벳과 숫자를 조합하여 무작위로 7자리의 코드를 생성

- datetime 모듈을 통해서 오늘 날짜를 추출

- while문은 총 100번 돌면서 무작위 데이터를 생성하고 Insert Query를 실행

smpl1 = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z','0','1','2','3','4','5','6','7','8','9']

i =1

today = datetime.today().strftime('%Y-%m-%d')

while i <= 100  :
    smplCode = random.sample(smpl1,7)
    code = ''.join(smplCode)

    query = "'"+code +"','"+today+"'"
    query_all = "insert into Table values("+ query+")"
    spark.sql(query_all)
    
    i = i + 1

Python