
1. 기본/개요
NumPy(Numerical Python)는 파이썬에서 다차원 배열(ndarray)을 다루는 핵심 라이브러리로, C로 구현된 내부 연산 덕분에 순수 파이썬 반복문보다 훨씬 빠른 수치 계산을 제공합니다. Pandas는 이 NumPy를 기반으로 만들어진 라이브러리로, 엑셀 시트처럼 행과 열로 구성된 데이터를 다루는 DataFrame과 1차원 데이터를 다루는 Series라는 자료구조를 제공합니다.
Pandas는 서로 다른 인덱스를 가진 데이터를 NumPy 배열로 손쉽게 변환할 수 있게 해주며, 대용량 데이터셋에 대한 라벨 기반 슬라이싱과 정교한 인덱싱, 서브셋 추출 기능을 제공합니다
.
두 라이브러리는 파이썬 데이터 분석 생태계의 사실상 표준으로, CSV·엑셀·데이터베이스에서 데이터를 불러와 정제(cleaning), 변형(transformation), 집계(aggregation)하는 작업 대부분을 이 둘로 처리합니다.
2026년 1월 출시된 Pandas 3.0에서는 문자열 데이터를 담은 컬럼을 기존의 object 타입 대신 새로운 전용 문자열(str) 데이터 타입으로 기본 추론하도록 바뀌었는데, 이는 상당한 하위 호환성 변화를 동반하는 중요한 변경점입니다
. NumPy 역시
2026년 6월 출시된 2.5.0 버전에서 파이썬 3.11 지원을 종료하고 distutils 관련 코드를 완전히 정리하는 등 과도기적 성격의 릴리스를 냈습니다
.
개인적으로는 Pandas가 "배우기는 쉽지만 제대로 쓰기는 어려운" 대표적인 라이브러리라고 생각합니다. df[df['col'] > 5] 같은 필터링 문법은 몇 분만 익혀도 따라 할 수 있지만, SettingWithCopyWarning이 왜 뜨는지, apply가 왜 느린지, merge와 join의 차이가 무엇인지처럼 "왜"를 이해하는 데는 상당한 시간이 필요합니다. 이 점은 입문자에게 반드시 짚어줘야 할 함정이라고 봅니다.
2. 기능/스펙
- NumPy 핵심 자료구조:
ndarray(N차원 배열). 모든 원소가 동일한 데이터 타입(dtype)을 가지며, 이 덕분에 벡터화(vectorization) 연산이 가능해 반복문 없이도 배열 전체에 연산을 적용할 수 있습니다. - Pandas 핵심 자료구조:
Series(1차원, 인덱스가 있는 배열),DataFrame(2차원 표 형태, 여러 컬럼이 각기 다른 dtype을 가질 수 있음). - 데이터 입출력:
pd.read_csv(),pd.read_excel(),pd.read_sql()등으로 다양한 소스에서 데이터를 불러오고,to_csv(),to_excel()등으로 저장할 수 있습니다. - 결측치 처리:
isna(),dropna(),fillna()등의 메서드로 빈 값을 탐지하고 처리합니다. - 그룹 연산:
groupby()를 이용해 특정 컬럼 기준으로 데이터를 묶고sum(),mean(),agg()등으로 집계할 수 있습니다. - 병합:
merge()(SQL의 JOIN과 유사),concat()(단순 이어붙이기),join()(인덱스 기준 병합) 등 다양한 결합 방식을 지원합니다. - NumPy와의 관계: Pandas의
DataFrame내부 데이터는 대부분 NumPy 배열로 저장되며,df.to_numpy()로 순수 NumPy 배열로 변환할 수 있습니다. 벡터 연산, 선형대수 등 저수준 수치 계산이 필요할 때는 NumPy를 직접 다루는 것이 더 적합합니다. - 최신 버전 동향: Pandas 3.0은 파이썬 3.11 이상을 지원하며, NumPy는 2026년 7월 기준 2.5.1 버전이 최신 안정 릴리스로, 파이썬 3.12 이상을 요구합니다.
3. 장단점
장점
- 반복문 없이 벡터화 연산을 사용하면 순수 파이썬 대비 처리 속도가 크게 향상됩니다.
- CSV, 엑셀, SQL, JSON 등 거의 모든 실무 데이터 포맷을 일관된 API로 다룰 수 있습니다.
groupby,pivot_table등 엑셀의 피벗 테이블 기능을 코드로 재현할 수 있어 반복 작업을 자동화하기 좋습니다.- 방대한 커뮤니티와 Stack Overflow 자료 덕분에 막히는 지점마다 참고할 자료를 찾기 쉽습니다.
단점(비판적 견해)
- 데이터 크기가 메모리 용량을 초과하면 Pandas 단독으로는 처리가 어려워, 이런 경우 Dask나 Polars, PySpark 같은 대안을 검토해야 합니다. 이는 Pandas의 근본적인 확장성 한계로 종종 지적되는 부분입니다.
apply()나for문을 DataFrame에 남용하면 벡터화의 이점을 전혀 살리지 못해, "Pandas를 쓰는데도 느리다"는 흔한 불만으로 이어집니다.- API가 매우 방대하고 같은 작업을 하는 방법이 여러 가지 존재해(
locvsilocvsatvsiat등), 입문자에게는 오히려 선택 과부하를 줄 수 있습니다. - Pandas 3.0의 문자열 dtype 기본 전환처럼 메이저 버전에서 발생하는 하위 호환성 변화는 기존 코드베이스 유지보수 부담을 늘릴 수 있습니다.
4. 추천대상
- 엑셀로 반복적인 데이터 정리·집계 작업을 하다가 자동화의 필요성을 느낀 실무자
- CSV나 데이터베이스에서 데이터를 불러와 통계·시각화 작업의 전처리 단계를 다뤄야 하는 분석가
- 머신러닝 모델 학습 전 데이터 전처리 파이프라인을 구축하려는 개발자
- 반대로, 수십 GB 이상의 대용량 데이터를 상시 다뤄야 한다면 Pandas 단독보다는 Polars나 Spark 계열 도구를 함께 검토하는 것을 권장합니다.
5. FAQ
Q1. NumPy와 Pandas 중 무엇을 먼저 배워야 하나요?
일반적으로는 NumPy의 배열 개념과 벡터화 연산을 먼저 가볍게 익힌 뒤 Pandas로 넘어가는 순서가 자연스럽습니다. Pandas 내부가 NumPy 배열을 기반으로 하기 때문에, NumPy를 조금이라도 알면 Pandas의 동작 원리를 이해하기 쉽습니다.
Q2. loc과 iloc의 차이는 무엇인가요?loc은 라벨(인덱스 이름) 기준으로 데이터를 선택하고, iloc은 정수 위치(포지션) 기준으로 선택합니다. 예를 들어 인덱스가 문자열이라면 df.loc['a']는 동작하지만 df.iloc['a']는 오류가 납니다.
Q3. Pandas 3.0으로 업그레이드하면 기존 코드가 깨지나요?
문자열 데이터를 다루는 부분에서 dtype 추론 방식이 바뀌었기 때문에, dtype == object 같은 조건문을 사용하는 코드는 영향을 받을 수 있습니다. 업그레이드 전 공식 릴리스 노트의 하위 호환성 변경 사항을 반드시 확인하는 것을 권장합니다.
Q4. 대용량 데이터는 Pandas로 처리할 수 없나요?
완전히 불가능한 것은 아니지만, 메모리에 전체 데이터를 올려야 하는 구조상 한계가 있습니다. 청크(chunk) 단위로 읽어 처리하는 방법도 있지만, 데이터가 지속적으로 매우 크다면 Dask, Polars, PySpark 같은 분산·대용량 처리 도구를 검토하는 것이 더 적절할 수 있습니다.
6. 출처
- pandas 공식 문서 및 PyPI 페이지, pypi.org/project/pandas
- pandas 공식 What's New 문서, "What's new in 3.0.0 (January 21, 2026)", pandas.pydata.org
- pandas GitHub 저장소 릴리스 노트, github.com/pandas-dev/pandas/releases
- NumPy 공식 뉴스 페이지, "NumPy 2.5.0 released", numpy.org/news
- NumPy PyPI 페이지, pypi.org/project/numpy (2.5.1, 2026년 7월 4일 릴리스 확인)