Pandas는 데이터 프레임 형태로 표 형식 데이터를 다루는 데 탁월한 Python 라이브러리입니다. 반면, Numpy나 Tensor 연산은 수학적 행렬 또는 벡터 계산에 특화되어 있어 고속 수치 연산에 적합합니다. 이 글에서는 Pandas의 데이터프레임 변환과 Numpy 기반 행렬 연산의 차이점과 활용 목적을 비교 분석합니다.
1. 구조 비교: DataFrame vs ndarray
| 항목 | Pandas (DataFrame) | Numpy (ndarray) |
|---|---|---|
| 구조 | 표 형식 (행/열 + 인덱스/컬럼) | 수치형 행렬 (n차원 배열) |
| 데이터 유형 | 숫자 + 문자열 + 혼합 가능 | 일관된 dtype만 가능 (float, int 등) |
| 인덱싱 | 레이블 기반: loc, iloc | 위치 기반 인덱싱: [i, j] |
| 성능 | 편의성 위주 | 수치 계산 성능 최적화 |
2. 행렬 변환 처리 관점의 차이
2-1. Pandas: 데이터 전처리/조작 중심
- 결측치 처리 (fillna, dropna)
- 열 단위 연산 및 필터링
- 열 추가, 병합, 피벗 등 SQL 유사 기능
import pandas as pd
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df['C'] = df['A'] + df['B']
2-2. Numpy: 고속 수학적 행렬 연산
- 행렬 곱, 역행렬, 고유값 등 선형대수 지원
- 다차원 텐서 연산에 적합
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.dot(A, B)
3. 상호 변환
두 구조는 다음과 같이 쉽게 변환 가능합니다:
Pandas → Numpy
A = df.values # 또는 df.to_numpy()
Numpy → Pandas
df = pd.DataFrame(A, columns=['x1', 'x2'])
4. 머신러닝에서의 활용 구분
- 전처리 및 CSV 읽기/가공: Pandas 사용
- 행렬 기반 학습/추론: Numpy 또는 Tensor 기반
예: Pandas로 데이터를 불러와서 넘파이로 변환한 뒤 신경망 입력으로 사용
5. 예시 시나리오
5-1. Pandas로 결측치 처리 + Numpy로 연산
df = pd.read_csv('data.csv')
df.fillna(0, inplace=True)
A = df.to_numpy()
result = np.linalg.inv(A.T @ A)
5-2. Numpy로 벡터 연산 후 Pandas에 결과 저장
A = np.random.rand(100, 5)
y = A @ np.random.rand(5)
df = pd.DataFrame(A, columns=[f'x{i}' for i in range(5)])
df['y'] = y
결론
Pandas는 데이터 가공과 분석에, Numpy는 수치 해석과 행렬 연산에 각각 특화된 도구입니다.
딥러닝 및 머신러닝 모델에서는 Pandas로 데이터를 정리하고, 이를 Numpy나 Tensor 형태로 변환하여 모델 학습에 투입하는 방식이 일반적입니다.
두 도구를 목적에 맞게 연계 활용하면 데이터 처리와 수학적 연산을 효율적으로 수행할 수 있습니다.