반응형
소개
대용량의 엑셀 데이터를 처리할 때 효과적인 전략을 마련하는 것은 데이터 과학이나 업무 자동화에서 중요한 과제 중 하나입니다. 이번 포스팅에서는 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 라이브러리를 사용하여 대용량 데이터를 효과적으로 처리하는 전략에 대해 알아보았습니다. 메모리 효율성을 높이고, 병렬 처리를 통해 가속화하며, 데이터를 청크로 나누어 처리함으로써 대용량 데이터를 안정적으로 다루는 방법을 습득했습니다. 앞으로의 포스팅에서는 더 다양한 엑셀 데이터 처리 전략에 대해 다룰 예정이니, 계속해서 기대해 주세요.
반응형
'Python > openpyxl' 카테고리의 다른 글
파이썬 openpyxl load_workbook 함수 활용하기 (0) | 2024.01.11 |
---|---|
파이썬 openpyxl 간단한 성능 향상 팁 (1) | 2024.01.10 |
파이썬 openpyxl 간단한 예외 처리 구현 (1) | 2024.01.08 |
파이썬 openpyxl 파일과 시트의 존재 여부 확인 (1) | 2024.01.05 |
파이썬 openpyxl 데이터 동적으로 삽입하고 서식 지정 (0) | 2024.01.04 |