
개요
NumPy와 Pandas는
Python 기반의 데이터 처리 라이브러리로, 데이터 과학, 머신러닝, 통계 분석 등에 널리 사용됨
두 라이브러리는 서로 보완적인 역할을 하지만, 기능과 목적이 다름.
유사점
| 항목 | 설명 |
| 기반 언어 | 모두 Python 기반이며, 내부적으로 C로 구현되어 고성능 |
| 배열 구조 | 모두 다차원 배열 기반 처리 지원 (NumPy의 ndarray, Pandas의 Series, DataFrame) |
| 벡터화 연산 | 반복문 없이 빠른 수치 계산 가능 (for문 대신 배열 연산 사용) |
| 결측치 처리 | np.nan, pd.isnull(), fillna() 등 결측 데이터 다룰 수 있음 |
| 연산 기능 | 요소 단위 연산, 집계 함수(합계, 평균 등), 브로드캐스팅 지원 |
| 시각화 | Pandas는 내부적으로 Matplotlib 연동 가능, NumPy 배열도 시각화에 활용됨 |
차이점
항목 NumPy Pandas
| 항목 | NumPy | Pandas |
| 기본 자료구조 | ndarray (다차원 배열) | Series, DataFrame (표 형태) |
| 주요 목적 | 빠르고 효율적인 수치 계산 | 구조화된 데이터(표, 엑셀 등) 분석 |
| 데이터 레이블 | 없음 (인덱스는 위치 기반) | 있음 (행/열 이름 기반 인덱싱 가능) |
| 데이터 타입 | 모든 원소가 동일한 타입 (int, float 등) | 열마다 서로 다른 타입 가능 (int, str, float 등) |
| 결측치 처리 | np.nan 사용, 처리는 수동적 | isnull(), fillna() 등 내장 함수로 간편 |
| 입출력 지원 | 없음 (기본 배열 기능) | CSV, Excel, SQL 등 다양한 형식의 데이터 불러오기/저장 지원 |
| 표 기반 연산 | 미지원 | 그룹화(groupby), 피벗(pivot), 병합(merge), 조인(join) 지원 |
| 사용 용도 | 과학 계산, 선형대수, 시뮬레이션, 딥러닝 등 | 데이터 분석, 전처리, 시계열 처리, 통계 등 |
요약 비교
기준 NumPy Pandas
| 기준 | NumPy | Pandas |
| 핵심 구조 | ndarray | Series, DataFrame |
| 구조화 데이터 | ❌ | ✅ |
| 수치 계산 속도 | ✅ 매우 빠름 | ⭕ 빠르지만 NumPy보다 느림 |
| 결측치 처리 | 수동 | 내장 함수로 편리 |
| 인덱스 | 숫자 인덱스 | 이름 기반 인덱스 가능 |
| 입출력 기능 | 없음 | ✅ CSV/Excel/DB 등 지원 |
| 표 연산 (groupby, join 등) | ❌ | ✅ |
| 용도 | 수치/과학 연산 중심 | 데이터 분석 중심 |
결론
- NumPy는 수치 데이터의 빠른 계산과 배열 기반 연산이 강력함. “수학 계산, 딥러닝 연산용 근육”
- Pandas는 행과 열이 있는 구조화된 데이터를 다룰 때 훨씬 직관적이고 강력함. “데이터 분석용 두뇌”
요약 :
NumPy와 Pandas는 비슷해 보이지만 목적과 사용 방식이 꽤 다름
NumPy는 수치 계산에 특화
Pandas는 구조화된 데이터 처리에 특화
Pandas VS NumPy 예제 코드 비교
1. 배열 vs 데이터프레임 생성
import numpy as np
import pandas as pd
# NumPy 배열 생성
a = np.array([[1, 2], [3, 4]])
print(a)
# 결과:
# [[1 2]
# [3 4]]
# Pandas DataFrame 생성
df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
print(df)
# 결과:
# A B
# 0 1 2
# 1 3 4
2. 평균 계산
# NumPy 평균
print(np.mean(a)) # 전체 평균: 2.5
print(np.mean(a, axis=0)) # 열 기준 평균: [2. 3.]
# Pandas 평균
print(df.mean()) # 각 열 평균: A=2.0, B=3.0
3. 조건 필터링
# NumPy: 2보다 큰 값만 선택
print(a[a > 2]) # [3 4]
# Pandas: A열이 1보다 큰 행만 선택
print(df[df['A'] > 1])
# 결과:
# A B
# 1 3 4
4. 새로운 열/행 추가
# NumPy는 불편 (새 배열 할당 필요)
b = np.hstack((a, np.array([[5], [6]])))
print(b)
# [[1 2 5]
# [3 4 6]]
# Pandas는 매우 직관적
df['C'] = [5, 6]
print(df)
# A B C
# 0 1 2 5
# 1 3 4 6
5. 결측치(NaN) 처리
# NumPy
c = np.array([1, np.nan, 3])
print(np.isnan(c)) # [False True False]
# Pandas
df2 = pd.DataFrame({'A': [1, None, 3]})
print(df2.isnull()) # 결측치 확인
print(df2.fillna(0)) # 결측치 0으로 대체
6. 데이터 불러오기 / 저장 (Pandas만 지원)
# Pandas CSV 읽기/쓰기
df = pd.read_csv('data.csv') # 읽기
df.to_excel('result.xlsx', index=False) # 저장
7. 병합 & 조인
df1 = pd.DataFrame({'id': [1, 2], 'name': ['A', 'B']})
df2 = pd.DataFrame({'id': [1, 2], 'score': [90, 85]})
# Pandas merge (SQL처럼 join)
result = pd.merge(df1, df2, on='id', how='inner')
print(result)
# id name score
# 0 1 A 90
# 1 2 B 85
8. 브로드캐스팅 예시 (NumPy만 지원)
a = np.array([[1], [2], [3]])
b = np.array([10, 20, 30])
print(a + b)
# 결과:
# [[11 21 31]
# [12 22 32]
# [13 23 33]]
9. 시각화 연동 (Pandas 내부 지원)
import matplotlib.pyplot as plt
df = pd.DataFrame({
'year': [2020, 2021, 2022],
'sales': [100, 150, 130]
})
df.plot(x='year', y='sales', kind='bar')
plt.show()
Pandas VS NumPy 예제 코드 비교
| 기능 | NumPy | Pandas |
| 수치 계산 | ✅ 빠름 | ⭕ 가능 |
| 표 구조 처리 | ❌ | ✅ |
| 결측치 처리 | 수동 | 자동화 |
| 데이터 불러오기/저장 | ❌ | ✅ |
| 브로드캐스팅 | ✅ | ❌ |
| 시각화 | ❌ (별도 라이브러리) | ✅ 연동 내장 |
'딥러닝 > 라이브러리' 카테고리의 다른 글
| 딥러닝 라이브러리 종류 (0) | 2025.07.09 |
|---|---|
| [라이브러리]Numpy (4) | 2025.07.09 |
| [라이브러리]Pandas (6) | 2025.07.09 |