[4편] AI 개발을 위한 파이썬 필수 라이브러리 기초 (NumPy와 Pandas)
파이썬 개발 환경 세팅을 마치고 코드 에디터를 켰다면, 이제 인공지능과 데이터 분석 분야에서 '쌍두마차'로 불리는 두 가지 필수 라이브러리인 NumPy(넘파이)와 Pandas(판다스)를 다룰 차례입니다.
파이썬 기본 문법(리스트, 튜플, 반복문 등)을 막 익힌 입문자들은 "파이썬 기본 리스트만 써도 계산이 되는데, 왜 굳이 NumPy나 Pandas 같은 별도의 라이브러리를 설치하고 복잡한 함수를 외워야 할까?"라는 궁금증을 품기 쉽습니다.
나 역시 처음 데이터 전처리를 배울 때, 파이썬 이중 리스트와 for 문으로 데이터를 하나씩 돌리며 처리하려다 수십만 건의 데이터 앞에서 프로그램이 멈춰버리는 경험을 한 적이 있습니다. 그때 NumPy와 Pandas를 적용하자 단 한 줄의 코드로 수초 만에 계산이 끝나는 것을 보고, 왜 이 두 라이브러리가 AI 개발의 절대적인 표준이자 필수 기반인지 뼈저리게 체감했습니다. 오늘 4편에서는 AI 개발에서 NumPy와 Pandas가 담당하는 역할과 핵심 실무 활용법을 정리해 드립니다.
1. 수치 계산과 행렬 연산의 속도 혁명: NumPy
NumPy(Numerical Python)는 파이썬에서 고성능의 다차원 배열(N-dimensional Array)과 수학적 연산을 쉽게 처리할 수 있도록 돕는 라이브러리입니다.
(1) 파이썬 기본 리스트보다 빠르고 효율적인 이유
파이썬의 기본 리스트는 다양한 자료형을 한 번에 담을 수 있어 편리하지만, 데이터가 메모리의 여러 곳에 흩어져 저장되기 때문에 수치 연산 속도가 매우 느립니다.
반면 NumPy의 핵심 객체인 ndarray는 동일한 자료형의 데이터를 메모리의 연속된 공간에 배치합니다. 또한 C 언어로 작성된 내부 엔진을 사용하여, 반복문(for 문)을 돌리지 않고 전체 배열을 한 번에 계산하는 '벡터화 연산(Vectorization)'을 수행합니다. 이 차이 덕분에 대용량 수치 계산 시 파이썬 기본 리스트보다 최소 수십 배에서 수백 배 이상 빠른 성능을 보여줍니다.
(2) AI 개발에서 NumPy가 중요한 이유
우리가 다루는 이미지, 텍스트, 음성 등의 모든 데이터는 AI 모델에 들어가기 전 결국 '숫자로 이루어진 행렬(Matrix)'로 변환됩니다.
이미지 데이터:
(가로, 세로, 채널)형태의 3차원 숫자 배열AI 딥러닝 내부의 가중치(Weights) 계산: 거대한 행렬의 곱셈 연산
PyTorch나 TensorFlow 같은 최첨단 딥러닝 프레임워크들도 내부적으로 NumPy 배열과 구조가 거의 동일한 '텐서(Tensor)'라는 데이터 단위를 사용하므로, NumPy의 행렬 연산 방식을 이해하는 것은 AI 모델링의 핵심 기초가 됩니다.
2. 데이터 표를 자유자재로 다루는 연장통: Pandas
NumPy가 숫자와 행렬 연산에 특화되어 있다면, Pandas는 엑셀(Excel)처럼 행과 열로 이루어진 '자료 구조(표 형태의 데이터)'를 다루는 데 최적화된 라이브러리입니다.
(1) Pandas의 두 가지 핵심 데이터 구조
Series (시리즈): 엑셀의 '단일 열(Column)'에 해당하는 1차원 데이터 구조입니다.
DataFrame (데이터프레임): 행(Row)과 열(Column)로 구성된 2차원 표 형태의 데이터 구조로, 실제 데이터 분석 시 가장 많이 사용하는 단위입니다.
(2) 실무 데이터 전처리에서의 역할
실제 현장에서 얻는 데이터는 결코 깨끗하지 않습니다. 빈 곳(결측치)이 있고, 중복된 값이 있으며, 이상한 기호가 들어있기 일쑤입니다. Pandas는 이러한 '더러운 데이터'를 정리하는 강력한 함수들을 제공합니다.
데이터 불러오기/저장: CSV, Excel, SQL, JSON 등 다양한 형식의 파일을 단 한 줄로 읽어옵니다. (
pd.read_csv())결측치(Missing Data) 처리: 데이터가 비어 있는 부분을 채우거나(
fillna), 제거(dropna)하여 AI 학습 오류를 막습니다.데이터 필터링 및 정렬: 특정 조건을 만족하는 데이터만 빠르게 추출하고 원하는 기준대로 정렬합니다.
3. NumPy와 Pandas를 함께 활용하는 데이터 처리 파이프라인
실제 AI 개발 과정에서는 두 라이브러리가 다음과 같은 순서로 긴밀하게 결합되어 사용됩니다.
[Pandas] 데이터 수집 및 정제:
외부에서 CSV 파일이나 DB 데이터를 데이터프레임으로 불러와 결측치를 채우고, 불필요한 열을 삭제하며 깔끔하게 가공합니다.
[NumPy] 수치 변환 및 행렬화:
정제된 Pandas 데이터프레임의 숫자 데이터들을
.to_numpy()함수 등을 이용해 NumPy 배열 형태로 변환합니다.[AI 프레임워크] 모델 입력:
변환된 NumPy 배열을 PyTorch나 TensorFlow 텐서로 바꾸어 인공지능 신경망 모델에 입력 데이터로 넣어 학습시킵니다.
4. 입문자가 자주 범하는 실무 실수 2가지
Pandas 데이터프레임에서 for 문으로 행 돌리기:
Pandas 데이터프레임의 데이터를 하나씩 수정할 때 파이썬
for문을 돌리는 실수를 많이 합니다. 이렇게 하면 Pandas의 빠른 내부 최적화 엔진을 활용하지 못해 속도가 극도로 느려집니다. 대신 Pandas가 지원하는 벡터화 연산이나.apply()함수를 활용해야 합니다.원본 데이터를 직접 수정하는 착각:
Pandas의 많은 함수(예:
dropna(),sort_values())는 기본적으로 원본 데이터프레임을 직접 바꾸지 않고, '수정된 새로운 데이터프레임'을 반환합니다. 원본 변수에 다시 할당해주거나(df = df.dropna())inplace=True옵션을 지정해 주어야 실제 반영됩니다.
핵심 요약
NumPy는 고성능 다차원 배열과 행렬 연산을 지원하여 AI 모델 연산의 기초를 형성합니다.
Pandas는 엑셀과 같은 데이터프레임 구조를 통해 데이터 수집, 정제, 결측치 처리 등 데이터 전처리를 손쉽게 수행합니다.
두 라이브러리 모두 파이썬
for문 대신 내부 최적화 연산을 사용하므로, 라이브러리가 제공하는 전용 함수를 적극 활용하는 코딩 습관이 필요합니다.
댓글
댓글 쓰기