[python] Pandas의 성능 향상을 위한 팁과 최적화 기법
Pandas는 데이터 조작과 분석을 위한 강력한 도구로 널리 사용되고 있지만, 매우 큰 데이터셋을 다룰 때 성능이 느릴 수 있다는 단점이 있습니다. 이에 대해 성능을 향상시키기 위한 팁과 최적화 기법을 알아보겠습니다.
목차
메모리 사용량 최적화
Pandas에서 메모리 사용량을 최적화하는 방법은 다양한데, 여기서는 다음과 같은 방법을 알아보겠습니다.
- 데이터 형식 최적화: 데이터프레임의 각 열의 데이터 형식을 최적화하여 메모리 사용량을 줄입니다. 예를 들어, 숫자형 데이터의 경우
int
대신int32
나int64
를 사용하여 메모리를 절약할 수 있습니다. - 카테고리 데이터 활용: 카테고리 데이터 타입을 사용하여 고유한 값의 개수가 적은 열에 대해 메모리를 더욱 효율적으로 사용할 수 있습니다.
# 데이터 형식 최적화
df['col1'] = df['col1'].astype('int32')
# 카테고리 데이터 활용
df['category_col'] = df['category_col'].astype('category')
벡터화된 연산 활용
Pandas는 벡터화된 연산을 지원하여 반복문을 사용하지 않고 전체 데이터에 대한 연산을 한 번에 처리할 수 있습니다. 이를 활용하여 연산 속도를 향상시킬 수 있습니다.
# 벡터화된 연산
df['new_col'] = df['col1'] + df['col2']
인덱싱 최적화
적절한 인덱싱을 활용하여 데이터프레임의 접근 및 조작 속도를 향상시킬 수 있습니다. 인덱싱에 대한 최적화는 다수의 연산에 영향을 미칠 수 있습니다.
# 인덱싱 최적화
df.loc[df['col1'] > 5, 'new_col'] = 10
병렬 처리
Pandas의 연산을 병렬 처리하여 CPU 코어를 최대한 활용할 수 있습니다. 이를 위해 swifter
, dask
등의 라이브러리를 활용할 수 있습니다.
# swifter 라이브러리 활용
import swifter
df['new_col'] = df['col'].swifter.apply(my_function)
참고 자료
Pandas의 성능 향상을 위해 메모리 사용량 최적화, 벡터화된 연산, 인덱싱 최적화, 그리고 병렬 처리를 활용하는 방법을 알아보았습니다. 이러한 기법을 적절히 활용하면 대규모 데이터셋에 대한 작업을 효율적으로 수행할 수 있습니다.