본문 바로가기
Python/openpyxl

파이썬 openpyxl 대용량 데이터 처리 전략

by PySun 2024. 1. 9.
반응형

소개

대용량의 엑셀 데이터를 처리할 때 효과적인 전략을 마련하는 것은 데이터 과학이나 업무 자동화에서 중요한 과제 중 하나입니다. 이번 포스팅에서는 openpyxl 라이브러리를 사용하여 대용량 데이터를 효율적으로 처리하기 위한 전략에 대해 알아보겠습니다. 대용량 데이터 처리는 메모리 효율성, 병렬 처리, 데이터 청크 등 다양한 측면에서 고려되어야 합니다.

1. 메모리 효율적인 처리:

대용량 데이터를 다룰 때 메모리를 효율적으로 활용하는 방법을 살펴봅시다.

from openpyxl import load_workbook

file_path = 'large_data.xlsx'

# 파일을 열 때 read_only 모드 사용
workbook = load_workbook(file_path, read_only=True)

# 시트의 모든 행을 반복적으로 읽기
for row in workbook.active.iter_rows():
    # 각 행에 대한 처리 로직 추가
    pass

2. 병렬 처리를 통한 가속화:

concurrent.futures 모듈을 활용하여 데이터 처리 작업을 병렬로 수행하여 처리 속도를 향상시키는 방법을 알아봅시다.

from openpyxl import load_workbook
from concurrent.futures import ThreadPoolExecutor

file_path = 'large_data.xlsx'

def process_row(row):
    # 각 행에 대한 처리 로직 추가
    pass

# 파일을 열 때 read_only 모드 사용
workbook = load_workbook(file_path, read_only=True)

# ThreadPoolExecutor를 사용하여 병렬 처리
with ThreadPoolExecutor() as executor:
    executor.map(process_row, workbook.active.iter_rows())

3. 데이터 청크 사용하기:

데이터를 작은 청크로 나누어 처리하여 전체 데이터를 메모리에 한 번에 로드하지 않는 방법을 살펴봅시다.

from openpyxl import load_workbook

file_path = 'large_data.xlsx'
chunk_size = 1000  # 처리할 데이터의 청크 크기

# 파일을 열 때 read_only 모드 사용
workbook = load_workbook(file_path, read_only=True)

# 데이터를 청크 단위로 처리
for chunk_rows in workbook.active.iter_rows(chunk_size=chunk_size):
    for row in chunk_rows:
        # 각 행에 대한 처리 로직 추가
        pass

마무리

이제 여러분은 openpyxl 라이브러리를 사용하여 대용량 데이터를 효과적으로 처리하는 전략에 대해 알아보았습니다. 메모리 효율성을 높이고, 병렬 처리를 통해 가속화하며, 데이터를 청크로 나누어 처리함으로써 대용량 데이터를 안정적으로 다루는 방법을 습득했습니다. 앞으로의 포스팅에서는 더 다양한 엑셀 데이터 처리 전략에 대해 다룰 예정이니, 계속해서 기대해 주세요.

반응형