Published on

파이썬 판다스로 대용량 엑셀 데이터 처리하기 - 100만 행도 문제없다

Authors

엑셀 파일은 데이터를 정리하고 분석하는 데 매우 유용하지만, 대용량 데이터 처리 시 성능 저하나 멈춤 현상이 발생할 수 있습니다. 특히 100만 행 이상의 데이터를 다룰 때, 많은 사용자들이 겪는 문제입니다. 이 글에서는 파이썬의 강력한 데이터 분석 라이브러리인 판다스(Pandas)를 사용하여 이러한 문제를 해결하는 방법을 소개하겠습니다.

판다스 설치 및 기본 사용법

판다스를 사용하기 위해서는 먼저 라이브러리를 설치해야 합니다. 아래 명령어를 사용해 판다스를 설치합니다:

pip install pandas

설치가 완료되면, 판다스를 사용하여 엑셀 파일을 읽고 데이터프레임(DataFrame) 형태로 변환할 수 있습니다. 기본적인 사용법은 다음과 같습니다:

import pandas as pd

df = pd.read_excel('large_data.xlsx')
print(df.head())  # 데이터의 상위 5개 행 출력

이렇게 간단하게 데이터를 불러올 수 있지만, 대량의 데이터를 처리할 때는 몇 가지 주의할 점이 있습니다.

대용량 데이터 처리의 어려움

대량의 데이터셋을 다룰 때 주로 발생하는 문제는 메모리 부족, 처리 속도 저하, 그리고 멈춤 현상입니다. 이 문제를 해결하기 위해서는 데이터의 로딩 방법, 메모리 최적화, 그리고 데이터 처리 방식에 대한 접근을 조정해야 합니다.

1. 청크 단위로 데이터 읽기

대량의 데이터를 한 번에 메모리에 로드하는 대신, 청크 단위로 읽어 처리하는 방법이 있습니다. 이렇게 하면 메모리 사용량을 줄일 수 있습니다. 예를 들어:

chunk_size = 10000  # 청크 크기 설정
chunks = pd.read_excel('large_data.xlsx', chunksize=chunk_size)

for chunk in chunks:
    # 각 청크에 대해 필요한 데이터 처리
    process_data(chunk)

이 예제처럼 각 청크를 순차적으로 처리하면 메모리 사용을 최적화할 수 있습니다.

2. 데이터 타입 최적화

데이터를 불러올 때 각 열의 데이터 타입을 명시하여 메모리 사용을 줄일 수 있습니다. 예를 들어, 정수형 데이터는 int32int16을 사용하고, 실수형 데이터는 float32로 변환하는 것이 좋습니다. 아래와 같이 설정할 수 있습니다:

dtype = {
    'column1': 'int32',
    'column2': 'float32',
    'column3': 'category',  # 범주형 데이터로 변환
}

df = pd.read_excel('large_data.xlsx', dtype=dtype)

이처럼 데이터 타입을 최적화하면 메모리 사용량을 크게 줄일 수 있습니다.

3. 필요한 열만 선택하기

대량의 데이터에서 모든 열을 불러오는 것은 비효율적입니다. 필요한 열만 선택하여 불러올 수 있습니다. 다음과 같이 usecols 매개변수를 활용해 필터링할 수 있습니다:

df = pd.read_excel('large_data.xlsx', usecols=['column1', 'column2'])

필요한 열만 불러오면 데이터 전처리 속도를 더욱 높일 수 있습니다.

분석 및 시각화

데이터를 불러오고 전처리한 후, 원하는 분석을 진행할 수 있습니다. 예를 들어, 특정 열의 평균을 구하는 방법은 다음과 같습니다:

mean_value = df['column1'].mean()
print(f'Column1의 평균값: {mean_value}')

또한, 판다스와 함께 사용할 수 있는 시각화 라이브러리인 Matplotlib을 활용하면 데이터의 시각적 표현도 가능합니다:

import matplotlib.pyplot as plt

df['column1'].hist(bins=50)
plt.xlabel('Column1')
plt.ylabel('Frequency')
plt.title('Column1 Histogram')
plt.show()

이렇게 시각화를 통해 데이터의 분포를 쉽게 이해할 수 있습니다.

결론

판다스를 사용하여 대용량 엑셀 데이터를 처리하는 것은 처음에는 어려워 보일 수 있지만, 몇 가지 팁과 기법을 활용하면 멈춤 현상 없이 효율적으로 데이터를 분석할 수 있습니다. 청크 단위로 데이터 읽기, 데이터 타입 최적화, 필요한 열만 선택하기 등 다양한 방법을 통해 데이터 처리 성능을 극대화할 수 있습니다. 이러한 방법들을 활용하여 귀하의 데이터 분석 작업이 더욱 원활하게 진행되길 바랍니다.