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' 오류에 대해 살펴보았습니다. 데이터의 크기를 줄이거나, 데이터 타입을 최적화하는 방법, 그리고 청크 처리를 통해 메모리 사용을 효율적으로 관리할 수 있습니다. 데이터 처리 시 항상 메모리를 고려하며 작업하는 것이 중요합니다. 고통받고 있는 데이터 과학자 여러분들을 응원합니다!

반응형