[Python] 랜덤한 데이터로 DataFrame 만들기
목차
블로그 글을 작성하거나, 이런저런 예시나 테스트를 할 때
가끔 랜덤한 데이터를 생성할 필요한 경우가 생깁니다.
한 번 알아놓으면, 매번 귀찮게 찾아보지 않아도 되니 천천히 따라 해보세요.
Random 데이터로 DataFrame 만들기
바쁜 사람들을 위해 결론 소스코드만 먼저 발사합니다.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 5)), columns=list("abcde"))
df
0~99까지의 랜덤한 정수로 이루어진
100행 5열짜리 데이터프레임 생성완료

아래는 설명하겠습니다ㅎ
랜덤한 숫자 뽑기
넘파이 모듈을 사용해서 랜덤한 숫자 뽑기
import numpy as np
np.random.randint(범위 시작, 범위 끝)
np.random.randint(0,100)
np.random.randint(0,100) 는 0에서 99까지의 숫자 중 랜덤하게 하나의 정수 값을 출력합니다.
랜덤한 숫자 행렬 만들기
np.random.randint에 size 옵션을 통해 원하는 size의 numpy array 행렬을 만들 수 있습니다.
아래 소스 코드와 같이 하면 100행 5열의 랜덤한 숫자 행렬을 만들 수 있습니다.
np.random.randint(0,100,size=(100, 5))
랜덤한 숫자로 데이터프레임 만들기
위에서 얻은 무작위 숫자로 이루어진 넘파이 배열을 pd.DataFrame으로 덮어주기만 하면 완성입니다.
df = pd.DataFrame(np.random.randint(0,100,size=(100, 5)))
df
Numpy를 Base로 사용한 이유
파이썬 내장 Random 모듈을 가져와서 사용해도 됩니다.
그러면 소스코드는 아래와 같이 되겠지요.
import random
random.randrange(0, 100)
data = [[random.randrange(0, 100) for _ in range(5)] for _ in range(100)]
df = pd.DataFrame(data)
random 모듈을 사용해서 데이터를 만들어도 되지만, 최종적으로 DataFrame 형태의 결과물을 얻을 것이므로 Numpy를 사용합니다.
Numpy와 Pandas는 Array 배열을 사용하니까 서로 호환이 잘돼서 더 빠르기 때문입니다.
속도 비교
똑같이 100행 5열 데이터를 만들어서 DataFrame으로 만드는 작업만 속도를 측정해 보아도 쉽게 알 수 있습니다.
data = [[random.randrange(0, 100) for _ in range(5)] for _ in range(100)]
data_np = np.random.randint(0,100,size=(100, 5))

넘파이를 사용한 Array 데이터가 10배 이상 빠른 것을 확인할 수 있습니다.