Giyoun's Projects

https://parkgiyoun.github.io/Project_tree_no_js/

Data Science

파이썬으로 데이터 분석하기 Numpy vs Pandas

P-Gyoun 2023. 10. 21. 21:56

안녕하세요 데이터를 좋아하는 개발자 PGY입니다.
이번 포스팅에서는, 파이썬의 라이브러리 Numpy와 Pandas에 대해 알아보고, 서로 비교해 보려고 합니다.
 
1. Numpy란?
 * numpy의 대표적인 장점
2. Pandas란?
 * pandas의 대표적인 장점
3. 최종 비교
 


1. Numpy란?

Numpy는 2005년에 구축된 라이브러리입니다.
기존 파이썬 Built-in기능으로 있던, List를 더 효율적으로 사용할 수 있게 만들어 놓은 라이브러리입니다.
우선 Numpy(넘파이)를 사용하기 위해서는, 다음과 같이 라이브러리를 import해야합니다.

import numpy as np

아나콘다를 설치 하지 않았다면, 아래와 같이 콘솔창에 입력을 해야합니다. 아나콘다를 설치 했으며, 현재 주피터노트북을 사용중이라면, 따로 설치는 필요하지 않습니다.

pip install numpy

 

Numpy의 대표적인 장점들

Numpy는 기본 파이썬이 제공하는 Array보다 속도가 빠르고, 메모리를 적게 사용한다는 특징이 있습니다.
여기서 속도는, 실행 속도 뿐만 아니라, 이를 사용할 때에 코드 작성 길이부터 적어지는데요.
 
 
다음은 두개의 리스트/Array를 연산하는 예시입니다.

# 파이썬 Built-in 방식에서 List의 연산
a = [1,2,3]
b = [3,2,1]
print(a + b)
## 출력 결과 = [1,2,3,3,2,1]

일반적인 list는 두개를 더하면, 내부의 값을 더하는 것이 아니라 그저 두개가 이어집니다.
벡터의 연산 처럼, 내부의 값들을 더하려면 다음과 같이 반복문을 사용해야합니다.
 

result = []
for i in range(len(a)):
	result.append(a[i]+b[i])

print(result)

그러나, Numpy에서는 다음과 같이 array끼리 사칙연산이 모두 가능합니다.
 

# Numpy ndarray
a_arr = np.array(a)
b_arr = np.array(b)

print(a_arr + b_arr)
# 실행 결과 : [4, 4, 4]

 
이 외에도 여러 이유들이 있으나, 대표적으로는 Loop(반복)을 사용하지 않고 사칙연산이 모두 가능하기에
프로그래밍 용이성과 실행 시간의 단축, 그리고 적은 메모리 사용량 이라는 장점을 가집니다.
 

2. Pandas란?

Pandas는 Numpy보다 더 나중에 개발 되었습니다. 2008년에 Wes McKinney에 의해 개발되었으며, 1차원 벡터 형태의 데이터인 Series와 2차원 테이블 형태의 데이터를 다루기 위한 Data Frame을 지원합니다.
 

Pandas의 대표적인 장점들

판다스는, 데이터 정제 및 탐색적 분석을 위한 다양한 기능을 가지고 있습니다.

ex)  모든 column들의 통계량을 계산해주는 메소드 .describe()

Pandas 통계량 계산

 
Numpy의 경우, 한가지 종류의 숫자 데이터타입만을 지원합니다. ( Homogeneous )
그러나, Pandas는, 열(Column)마다 다른 타입의 데이터를 사용 할 수 있다는 장점이 있습니다. ( Heterogeneous ) 
 
 

3. 최종 비교

파이썬은 처음부터 데이터 사이언스를 위해 나온 언어가 아닙니다.
데이터 사이언스라고 하면, R과 함께 파이썬을 떠올릴 수 있게 된 이유가 바로 Numpy와 Pandas의 개발이었다고 생각합니다. 대량의 데이터를 빠르게 처리하고 시각화 할 수 있도록 했다는 점에서 이 두 라이브러리가 의미있다고 볼 수 있습니다.
 
빅데이터는 수치데이터만 가지고 있지 않습니다. 심지어는 영상과 사진도 데이터로써 분석되고 있습니다. 이런 요즈음의 트렌드들을 생각한다면, Numpy라이브러리의 전처리/정제는 상당히 한정적이라고 생각합니다.
 
수치데이터의 정제와 분석 뿐만아니라, 범주형 데이터까지 정제와 분석 작업을 할 수 있는 Pandas 라이브러리가 더 활용도가 높겠다고 볼 수 있습니다.