반응형
파이썬 리스트 vs Pandas vs NumPy 정렬 성능 비교
파이썬에서 데이터를 다룰 때, 단순한 list를 사용할지,
혹은 고성능을 자랑하는 Pandas와 NumPy를 사용할지 고민해보신 적 있나요?
이번 글에서는 기본 리스트 정렬, Pandas 정렬, NumPy 정렬을
실제로 동일한 조건에서 벤치마크하여 어떤 상황에 어떤 도구가 유리한지 살펴봅니다.
✅ 비교 대상 요약
라이브러리 | 정렬 함수 | 특징 |
파이썬 기본 리스트 | sorted() / list.sort() | 순수 파이썬, 유연하지만 느릴 수 있음 |
NumPy | np.sort() | 빠르고 메모리 효율적, C기반 |
Pandas | df.sort_values() | 편리한 기능 제공, 오버헤드 있음 |
✅ 테스트 환경
- Python 3.11
- NumPy 1.26+
- Pandas 2.2+
- 데이터 크기: 1,000,000개의 랜덤 숫자
- 측정 도구: timeit
✅ 1. 데이터 준비
import random
import numpy as np
import pandas as pd
# 공통 데이터
N = 1_000_000
data_list = [random.randint(1, 1_000_000) for _ in range(N)]
data_np = np.array(data_list)
data_df = pd.DataFrame({'value': data_list})
✅ 2. 정렬 성능 측정
import time
# 리스트 정렬
start = time.time()
sorted_list = sorted(data_list)
print(f"Python sorted(): {time.time() - start:.4f}초")
# NumPy 정렬
start = time.time()
sorted_np = np.sort(data_np)
print(f"NumPy sort: {time.time() - start:.4f}초")
# Pandas 정렬
start = time.time()
sorted_df = data_df.sort_values(by='value')
print(f"Pandas sort: {time.time() - start:.4f}초")
✅ 결과 예시
Python sorted(): 0.2654초
NumPy sort: 0.0712초
Pandas sort: 0.3810초
💡 NumPy가 가장 빠르고,
Pandas는 오버헤드가 있어 느리지만 사용은 간편,
기본 리스트는 그 중간쯤 성능을 보입니다.
반응형
✅ 메모리 사용과 기능 비교
항목 | 파이썬 리스트 | NumPy | Pandas |
메모리 효율 | 낮음 | 높음 | 낮음 |
속도 | 중간 | 매우 빠름 | 느림 |
기능 다양성 | 낮음 | 중간 | 매우 높음 |
편의성 | 보통 | 다소 낮음 | 매우 높음 |
다차원 정렬 | 직접 구현 필요 | 지원 | 매우 강력 |
안정성(Stable Sort) | 지원 | 기본 지원 | 기본 지원 |
✅ 언제 어떤 정렬을 쓸까?
상황 | 추천 도구 |
단순 정수 리스트 | sorted() 또는 np.sort() |
대용량 수치 배열 | NumPy (가장 빠름) |
데이터프레임 기반 정렬 | Pandas (sort_values, groupby, multiindex 등) |
복잡한 조건, 다중 필드 | Pandas |
머신러닝 전처리 | NumPy / Pandas 둘 다 가능 (속도 vs 기능 트레이드오프) |
✅ 실무 팁
- 수치 데이터만 정렬할 땐 NumPy가 최적
- 컬럼 기준, 그룹 기준 정렬을 자주 한다면 Pandas가 더 강력
- 파이썬 기본 list.sort()는 작은 규모 또는 커스텀 로직이 있을 때 유용
- Pandas에서 정렬 속도를 높이고 싶다면 inplace=True, ignore_index=True 옵션을 사용하세요.
✅ 마무리
정렬은 데이터 분석과 처리에서 반드시 필요한 작업입니다. 성능이 중요한 상황에서는 NumPy, 유연성과 가독성이 중요할 땐 Pandas, 작고 단순한 데이터는 리스트 정렬로 충분합니다. 각 도구의 특징을 잘 알고 상황에 맞는 정렬 방법을 선택하세요!
반응형
'코딩취미 > Python' 카테고리의 다른 글
Pandas 정렬 고급편: 다중 조건 정렬과 GroupBy 후 정렬 완전 정복 (0) | 2025.05.03 |
---|---|
os.path.join에서 NoneType 오류가 발생하는 이유와 해결 방법 (0) | 2025.05.02 |
파이썬 정렬 성능 비교: sorted(), sort(), key=lambda 성능 차이는? (0) | 2025.04.26 |
파이썬 정렬 고급편: 여러 기준 정렬과 내림차순 정렬 쉽게 이해하기 (0) | 2025.04.26 |
파이썬 정렬의 핵심! key=lambda 쉽게 이해하고 활용하기 (0) | 2025.04.25 |