파이썬에서 메모리 사용량을 최적화한 데이터 전처리 방법

파이썬은 사용하기 쉽고 강력한 프로그래밍 언어지만, 대규모 데이터를 다룰 때 메모리 사용량이 증가하는 문제가 있습니다. 특히 데이터 전처리 단계에서 메모리를 최적화하는 것은 중요합니다. 이 글에서는 파이썬에서 메모리 사용량을 최적화하기 위한 몇 가지 방법을 소개하겠습니다.

1. 제너레이터 사용

데이터를 읽어와서 메모리에 올리는 대신, 제너레이터(generator)를 사용하여 파일에서 한 줄씩 읽어오는 방법을 추천합니다. 제너레이터를 사용하면 한 번에 모든 데이터를 메모리에 로드하지 않기 때문에 메모리 사용량을 크게 줄일 수 있습니다.

def data_generator(filename):
    with open(filename, 'r') as file:
        for line in file:
            yield line.strip().split(',')

for data in data_generator('data.csv'):
    # 데이터 처리 로직 작성
    pass

2. 필요한 컬럼만 선택

전체 데이터를 한 번에 로드하지 않고 필요한 컬럼만 선택하여 로드하는 방법도 메모리 최적화에 도움이 됩니다. 판다스(Pandas) 라이브러리를 사용하면 이를 간편하게 처리할 수 있습니다.

import pandas as pd

df = pd.read_csv('data.csv', usecols=['column1', 'column2'])
# 필요한 컬럼('column1', 'column2')만 로드됨

3. 데이터 형식 최적화

파이썬의 기본 데이터 타입은 메모리를 많이 사용합니다. 데이터 형식을 최적화함으로써 메모리 사용량을 줄일 수 있습니다. 예를 들어, 정수형 데이터가 메모리를 많이 차지할 경우 numpy 라이브러리의 int8, int16 등과 같은 형식으로 변환하여 사용하는 것이 좋습니다.

import numpy as np

data = np.array([1, 2, 3], dtype=np.int8)

4. 큰 데이터셋 분할 처리

메모리에 한 번에 읽어올 수 없는 큰 데이터셋을 처리해야 할 경우, 데이터를 작은 청크(chunk)로 나누어 처리하는 방법을 고려해야 합니다. 이를 위해 pandasread_csv 함수에 chunksize를 지정하여 청크 단위로 데이터를 읽을 수 있습니다.

import pandas as pd

chunk_size = 1000
for chunk in pd.read_csv('data.csv', chunksize=chunk_size):
    # 청크 단위로 데이터 처리 로직 작성
    pass

이렇게하면 한 번에 메모리에 로드되는 데이터 양이 줄어들어 메모리 사용량을 최적화할 수 있습니다.

이러한 방법들을 조합하여 데이터 전처리 단계에서 파이썬의 메모리 사용량을 최적화할 수 있습니다. 대용량 데이터를 다루는 경우에는 반드시 이러한 최적화 기법을 적용해야만 원활한 데이터 분석 및 처리가 가능합니다.

#Python #DataPreprocessing #MemoryOptimization