[python] 넘파이와 판다스를 활용한 성능 향상 방법
목차
들어가기
넘파이(Numpy)와 판다스(Pandas)는 파이썬 데이터 과학 및 분석 분야에서 널리 사용되는 라이브러리입니다. 그러나 대용량 데이터 처리 시에는 처리 속도와 메모리 사용량에 관한 문제가 발생할 수 있습니다. 이런 상황에서는 성능 향상을 위한 방법을 고려해야 합니다.
넘파이를 활용한 성능 향상
넘파이는 배열(array) 기반의 연산을 지원하여 빠른 연산이 가능합니다. 여기에 몇 가지 방법을 활용하여 성능을 높일 수 있습니다:
- 벡터화 연산: 순회문을 사용하지 않고 배열 전체에 대해 한 번에 연산을 수행합니다.
import numpy as np arr1 = np.array([1, 2, 3, 4]) arr2 = np.array([5, 6, 7, 8]) result = arr1 + arr2
- 브로드캐스팅(Broadcasting): 모양이 다른 배열 간에도 산술 연산이 가능하도록 해줍니다.
arr3 = np.array([[1, 2, 3], [4, 5, 6]]) scalar = 10 result = arr3 + scalar
- 집계 함수 사용: 넘파이의 내장 함수를 활용하여 배열의 합계, 평균 등을 빠르게 계산할 수 있습니다.
arr4 = np.array([1, 2, 3, 4, 5]) total = np.sum(arr4)
판다스를 활용한 성능 향상
판다스는 데이터프레임(DataFrame) 기반의 자료구조를 제공하며, 데이터 조작과 처리에 용이합니다. 성능 향상을 위해 다음과 같은 방법을 고려할 수 있습니다:
- 재색인(indexing): 불필요한 복사를 피하고 데이터를 새로운 형태로 재배열합니다.
import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6]} df = pd.DataFrame(data) df = df.reindex(columns=['B', 'A'])
- 벡터화 연산 활용: 판다스는 넘파이의 벡터화 연산을 지원하므로, 넘파이와 동일하게 연산을 수행할 수 있습니다.
df['C'] = df['A'] * df['B']
- 메모리 사용량 최적화: 불필요한 데이터를 제거하고 메모리를 최적화합니다. 예를 들어, 범주형 데이터를 정수형으로 변환하여 메모리를 절약할 수 있습니다.
df['category'] = df['category'].astype('int8')
결론
넘파이와 판다스는 데이터 처리 및 분석을 위한 강력한 도구지만, 대용량 데이터의 경우 성능 향상을 위해 몇 가지 기술과 방법을 적용할 수 있습니다. 벡터화 연산, 브로드캐스팅, 메모리 최적화 등을 통해 코드의 성능과 메모리 효율성을 높일 수 있습니다. 이러한 기술들을 적절히 활용하여 데이터 처리 성능을 향상시킬 수 있습니다.