파이썬은 사용하기 쉽고 강력한 프로그래밍 언어지만, 대규모 데이터를 다룰 때 메모리 사용량이 증가하는 문제가 있습니다. 특히 데이터 전처리 단계에서 메모리를 최적화하는 것은 중요합니다. 이 글에서는 파이썬에서 메모리 사용량을 최적화하기 위한 몇 가지 방법을 소개하겠습니다.
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)로 나누어 처리하는 방법을 고려해야 합니다. 이를 위해 pandas
의 read_csv
함수에 chunksize
를 지정하여 청크 단위로 데이터를 읽을 수 있습니다.
import pandas as pd
chunk_size = 1000
for chunk in pd.read_csv('data.csv', chunksize=chunk_size):
# 청크 단위로 데이터 처리 로직 작성
pass
이렇게하면 한 번에 메모리에 로드되는 데이터 양이 줄어들어 메모리 사용량을 최적화할 수 있습니다.
이러한 방법들을 조합하여 데이터 전처리 단계에서 파이썬의 메모리 사용량을 최적화할 수 있습니다. 대용량 데이터를 다루는 경우에는 반드시 이러한 최적화 기법을 적용해야만 원활한 데이터 분석 및 처리가 가능합니다.
#Python #DataPreprocessing #MemoryOptimization