Python/Pandas
pandas MemoryError: Unable to allocate array 오류 해결하기
PySun
2025. 4. 24. 08:17
반응형
소개
Pandas를 사용하며 데이터프레임을 처리하다보면 'MemoryError: Unable to allocate array'라는 오류에 부딪힐 수 있습니다. 이 오류는 주로 시스템의 메모리가 부족할 때 발생하며, 대용량 데이터셋을 다루고 있을 때 특히 빈번합니다. 이번 포스트에서는 이 에러의 원인과 해결 방법에 대해 알아보겠습니다.
에러 발생 예시 코드
아래는 데이터프레임을 생성하려 할 때 'MemoryError'가 발생할 수 있는 간단한 예시 코드입니다.
import pandas as pd
import numpy as np
# 대용량 데이터프레임 생성
data = np.random.rand(10**9, 10) # 10억 개의 행
df = pd.DataFrame(data)
print(df)
에러 해결 방법
1. 데이터의 크기를 줄이기
대량의 데이터를 다룰 때는 먼저 데이터를 줄이는 방법을 고려해보세요. 예를 들어, 필요한 열만 선택하거나 데이터의 샘플을 생성할 수 있습니다.
import pandas as pd
import numpy as np
# 샘플 데이터프레임 생성 (1000개 행)
data = np.random.rand(1000, 10)
df = pd.DataFrame(data)
print(df)
2. 데이터 타입 최적화
데이터 타입을 최적화하여 메모리 사용량을 줄일 수 있습니다. 예를 들어, 정수형 데이터를 'int32'로 변경하면 메모리 사용량을 절약할 수 있습니다.
import pandas as pd
import numpy as np
# 대용량 데이터프레임 생성
data = np.random.rand(10**6, 10) # 100만 개의 행
df = pd.DataFrame(data)
# 데이터 타입 최적화
df = df.astype('float32') # float32로 변경
print(df.info())
3. 청크 처리 사용하기
특히 대용량 CSV 파일을 읽을 때는 청크 처리를 통해 한 번에 메모리에 로드되는 데이터의 양을 줄일 수 있습니다.
import pandas as pd
# 청크로 데이터 읽기
chunk_size = 10000 # 청크 크기
chunks = pd.read_csv('large_file.csv', chunksize=chunk_size)
for chunk in chunks:
# 각 청크에 대한 처리
print(chunk.shape)
마무리
이 포스트에서는 Pandas에서 발생하는 'MemoryError: Unable to allocate array' 오류에 대해 살펴보았습니다. 데이터의 크기를 줄이거나, 데이터 타입을 최적화하는 방법, 그리고 청크 처리를 통해 메모리 사용을 효율적으로 관리할 수 있습니다. 데이터 처리 시 항상 메모리를 고려하며 작업하는 것이 중요합니다. 고통받고 있는 데이터 과학자 여러분들을 응원합니다!
반응형