Fake Data 생성 – 빅데이터 처리 실습용 데이터 (Faker 활용)

이번 포스팅에서는 파이썬을 활용하여 실제 빅데이터 처리 및 분석 실습을 위한 대용량의 Fake Data 생성 방법에 대해서 알아 보겠습니다.
일반 블러그나 유투브에서 설명하는 데이터 분석을 보면, 비슷 비슷하고, 간단한 데이터를 기반으로 설명을 하는데요.
이는 실제 빅데이터 분석을 수행하는 데 있어 많은 제약 사항이 있습니다.
그래서 실제 빅데이터를 처리하는 데 유용한 방법을 학습하기 위해 일반 데이터 예제보다는 큰 데이터를 생성하는 방법에 대해서 알아 보겠습니다.
또한, 이렇게 생성된 빅데이터를 분석하기 위해 메모리에 업로드하는 방법에 대해서도 알아 보겠습니다.

Fake Data 생성 방법

그럼 Fake Data를 생성해 보겠습니다.
Fake Data를 생성하는 자세한 방법은 Python Skill을 활용한 생산성 및 코드품질향상 포스팅 글을 참고하시면 됩니다.

import pandas as pd
from faker import Faker

# Faker 객체 생성
fake = Faker()

# 50만건의 Fake Data 데이터 프레임 생성하기
fakerDf = pd.DataFrame(
            {
              'date':[fake.date() for i in range(500000)],
              'name':[fake.name() for i in range(500000)],
              'email':[fake.email() for i in range(500000)],
              'text':[fake.text() for i in range(500000)],
              'cardamt':[fake.random_number(digits=5) for i in range(500000)],
              'address':[fake.address() for i in range(500000)],
              'country':[fake.country() for i in range(500000)]
            }
           )

fakerDf.to_csv("D:/빅데이터처리 실습용 Fake Data.csv")

위의 코드를 실행하면, 데이터 개수가 50만 개이고, 컬럼이 7개인 “빅데이터처리 실습용 Fake Data.csv” 파일이 D드라이브에 생성됩니다. 파일의 용량은 약 130MB 정도 됩니다.
실제 빅데이터는 수십 ~ 수백 기가에 해당하는 엄청난 용량을 차지합니다.
실제 빅데이터라고 하기에는 용량이 크지 않습니다.
하지만, RAM 용량이 크지 않은 로컬 PC를 이용해서 데이터를 생성하는 데는 한계가 있어, 해당 파일을 이용하여 빅데이터 처리를 위한 방법에 대해서 알아 보겠습니다.

pandas read_csv 활용하여 데이터 읽어들이기

데이터 처리를 하기 위해 pandas에서 제공하는 read_csv() 함수를 이용하겠습니다. 위에서 생성한 “빅데이터처리 실습용 Fake Data.csv”를 메모리에 업로드 하는 코드는 아래와 같습니다.

%%time 
import pandas as pd
pandasData = pd.read_csv("D:/빅데이터처리 실습용 Fake Data.csv")
----------------------------
CPU times: total: 1.06 s
Wall time: 3.17 s

pandas에서 제공하는 read_csv() 함수를 사용하여 메모리에 업로드 하는데 걸리는 시간은 약 3.17초 입니다. 메모리 사용량을 알아 보겠습니다.

pandasData.info(memory_usage = 'deep')

----------------------------------------

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 500000 entries, 0 to 499999
Data columns (total 8 columns):
 #   Column      Non-Null Count   Dtype 
---  ------      --------------   ----- 
 0   Unnamed: 0  500000 non-null  int64 
 1   date        500000 non-null  object
 2   name        500000 non-null  object
 3   email       500000 non-null  object
 4   text        500000 non-null  object
 5   cardamt     500000 non-null  int64 
 6   address     500000 non-null  object
 7   country     500000 non-null  object
dtypes: int64(2), object(6)
memory usage: 288.0 MB

메모리 사용량은 288.0 MB입니다. 130MB 데이터를 분석하기 위해서 해당 데이터를 메모리에 업로드 하는 것으로 288.0MB가 필요합니다. 앞서 설명드린 것처럼, 실제 빅데이터 용량은 수십 ~ 수백 기가에 해당하는데, 이를 위의 방식으로 메모리에 업로드를 시도한다면, 메모리 부족으로 에러가 발생합니다.
이를 해결할 수 있는 여러 방안이 있습니다. 그 중 하나는 PyArrow 패키지를 활용하여 csv 파일을 parquet 파일로 변환하여 분석하는 것입니다. 다음 포스팅에서는 대용량의 csv 파일을 parquet 파일로 변환하는 방법에 대해서 알아 보겠습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다