Python을 활용한 데이터 분석과 시각화

데이터 분석을 위한 라이브러리 1(Numpy)

본투비곰손 2022. 12. 19. 23:07
728x90

1. 아나콘다 설치 프로그램 다운 및 설치

https://www.anaconda.com/ 에 방문하여 Anaconda3-2022.10-Windows-x86_64.exe 를 다운받고 설치함

아나콘다를 설치하면 Jupyter Notebook가 설치 되어있는데 이를 활용한다.

데이터 분석을 위한 대부분의 라이브러리가 설치되어있다.

 

2. 주피터 노트북

주피터 노트북을 실행하고 우측 상단 New → Notebook → python3 을 실행하면  코드를 작성 할 수 있다.

 

3. Numpy

 - 데이터 과학을 위한 많은 라이브러리 중에서 가장 기본이 되는 라이브러리

 - 넘파이는 데이터를 타차원 배열에 저장할 때 같은 자료형으로만 저장할 수 있으며 같은 자료형으로만 데이터를 저장하면 각 데이터 항목에 필요한 저장공간이 일정하다. 따라서 몇번째 위치에 있는 항목이든 그순서만 안다면 간단한 계산으로 바로 접근할 수 있다.

- 다차원 배열의 속성

a.shape 객체의 형상

a.ndim 객체의 차원

a.adtype 객체 요소의 자료형

a.size 객체 요소의 크기

a.ittemsize 배열 요소의 크기를 바이트단위로 기술함 int32 자료형의 크기는 32/8 즉 4바이트가 된다.

a.stride 배열의 차원별 요소로 다음 요소로 점프하는데 필요한 거리를 바이트로 표시한 

 

여러 속성중 다차원 배열의 행과 열을 비롯한 차원의 형상을 출력하는 shape 속성은 넘파이 이용자가 가장 자주 사용하는 속성 이다.

2차원의 배열은 배열 안에 배열이 있는 형태이다.

b = np.array ([ [1, 2, 3], [4, 5, 6] ])

 

다차원 배열은 파이썬 리스트와 유사하게 + 또는 * 연산자와 같은 사칙 연산자를 적용할 수 있지만 이연산자들이 하는 일은 리스트와 다르다. 연산시에는 같은자리 위치의 숫자만 계산해준다.

 

다차원 배열과 브로드캐스팅

배열에 스칼라값(단일 데이터)을 계산해주면 모든 원소 각각에 스칼라 값이 계산된것을 확인 할 수 있다.

a = np.array([3, 4, 5])

a*6 

array([18, 24, 30]) 이렇게 출력 된다.

넘파이는 배열과  단일값을 연산할 때 단일값을 상대 배열 원소의 갯수와 동일한 원소 갯수를 갖는 배열로 만들어 단일 데이터를 벡터로 확장시키는 작업을 하는데 이를 브로드캐스팅이라고 한다.

브로드 캐스팅과 동시에 파이썬은 하나의 명령을 여러 데이터에 적용하여 병렬적으로 연산한다. 이를 벡터화 연산이라고 한다.

 

a = np.array([1, 2, 3])

b = np.array([[4, 5, 6],[7, 8, 9]])

a+b

1차원 배열인 a와 2차원 배열인 b 를 더해주면 a의 배열은 ([[1, 2, 3],[1, 2, 3]])으로 브로드캐스팅 되어 같은 자리 위치의 숫자와 연산이되어 값은 array([[5, 7, 9],[8, 10, 12]]) 가 출력 된다.

 

연속적인 값을 가지는 다차원 배열의 생성 

맨처음 값은 항상 포함 마지막값은 항상 제외

 

np.arange(0,10) = array([0,1,2,3,4,5,6,7,8,9]) #1이 생략되어있음

np.arange(0,10,2) = array([0,2,4,6,7,8]) #0 부터 시작해서 10까지 2씩 증가하는 숫자로 배열을 만들라는 뜻

np.arange(0.1, 1.0, 0.2) = array([0.1, 0.3, 0.5, 0.7, 0.9]) (실수도 가능하다.)

 

np.linspace(0,10,5) = array([0.0, 2.5, 5.0, 7.5, 10.0]) # 0~10 사이의 구간에서 시작값과 마지막 값을 포함하며 5개의 같은 간격을 가진 수를 배열로 나타낸다.

np.linspace(0,10,4) = array([ 0.        ,  3.33333333,  6.66666667, 10.        ]) 이와같이 출력 된다.

 

파이썬의 리스트와 넘파이의 가장큰 차이는 계산 성능이다.(메모리 구조가 다르기때문에 성능차이 발생!)

넘파이는 대용량의 배열과 해렬 연산을 수행하는 고차원적인 수학 연산자와 함수를 포함하고 있고 성능이 우수한 ndarray객체를 제공한다.

전통적으로 배열은 동일한 자료형을 가진 데이터를 연속으로 저장한다.

파이썬의 리스트는 동일하지 않은 자료형을 가진 항목도 담을 수 있다.

728x90