본문 바로가기
데이터 분석

데이터 분석 with Python 1장 - NumPy를 활용한 데이터 분석 -

by ChocoPeanut 2017. 6. 9.

데이터 분석 with Python 1

- NumPy를 활용한 데이터 분석 -

 

NumPy는 주요한 python 데이터 분석 라이브러리의 기본 베이스가 되는 라이브러리로 벡터 및 행렬 연산과 관련하여 편리한 인터페이스를 제공한다.



NumPy를 설치하는 방법은 cmd 프로그램이나 터미널에 pip install numpy라는 명령을 입력해주면 쉽게 설치가 가능하다. NumPy를 사용하기 위해서는 Python에서 import를 시켜 주어야한다. import numpy as np 로 명령을 넣어서 np라는 이름을 통해 numpy 모듈을 사용할 수 있는 상태로 만든다.


NumPy는 기본적으로 array라는 단위로 데이터를 관리한다. 이러한 데이터를 활용해서 다양한 연산을 할 수 있고 이를 통해 데이터 분석을 할 수 있다. 이 때 이 데이터는 앞에서 말했듯이 벡터와 행렬에 대한 값들과 같은 형태로 생각할 수 있다.


array는 기본적으로 np.array() 라는 함수를 사용하여 정의할 수 있다. 이 때 python에서 사용하는 리스트나 다른 곳에서 np로 정의된 array의 값이 인자로 받아들여질 수 있다. 외부의 데이터를 받아와서 사용할 때도 np.array()라는 함수를 통해 특정 변수에 저장하게 된다. 이 때 np.loadtxt()라는 함수를 사용하게 된다. array에 대한 크기를 확인하기 위해서는 shape이라는 멤버 변수를 사용한다. shape은 함수가 아니라 변수이라는 것에 주의해서 사용해야한다.


정해진 데이터가 아니라 특수한 array에 대한 데이터가 변수에 저장을 시키고 싶은 경우가 있다. 예를 들어 모든 성분이 0으로 되어 있는 array를 정의하고자 할 때에는 np.zeros()라는 함수를 사용하면 된다. 또한 성분이 1로 되어 있는 arraynp.ones()라는 함수를 사용한다. 그리고 일정한 차이를 갖는 연속적인 값의 성분들로 구성된 array를 정의할 때에는 np.arange()를 사용한다. 아니면 랜덤한 수로 데이터를 생성하고 싶을 때에는 np.random.randn() 이라는 함수를 사용한다. 이러한 함수들을 통해 array를 생성할 때에는 반드시 인자로 array의 크기를 지정해 주어야한다.


array에는 다양한 데이터형이 올 수 있다. 숫자에 대한 값이 올 수도 있고 문자에 대한 값도 들어갈 수 있다. 또한 숫자 중에서는 정수일수도 있고 실수의 범위일 수도 있다. 이런 것은 dtype이라는 인자에 의해 결정된다. dtype에 대해 명시를 하지 않을 경우 numpy에서 가장 적절한 데이터형을 자동으로 인식하여 해당 array에 부여하지만 직접 지정을 해서 데이터가 어떤 값을 갖는지를 표시해주는 경우가 더 좋다. numpy에서 사용가능한 데이터 형은 다음과 같다고 할 수 있다. [dtype = 데이터형] 형식으로 지정해주면 된다.



array에 관련된 연산은 매우 많다. array 간에는 사칙연산이 가능하다. 대신에 사칙연산을 할 경우 동일한 위치의 성분끼리 계산이 되어 새로운 array를 만들어낸다. 그러므로 당연히 두 array의 모양이 같아야만 연산이 가능하다. 이런 연산에는 maximumminimum으로 두 array의 값을 비교하여 최댓값 최솟값을 내보내주는 함수도 있다.


arrayindex라는 개념이 존재한다. index는 데이터의 위치를 표시해주는 좌표이다. array 변수에 [] 기호를 사용하면 arrayindex를 통해 데이터를 명시할 수 있게 된다. 이는 python에서 리스트에 지정하는 형태와 매우 비슷하다. ‘:’ 기호를 사용하여 범위의 형태로 index를 지정해주는 것도 같다고 할 수 있다. 물론 이런 형태는 2차원에서도 가능하다. 행과 열을 ‘,’를 통해 구분해 준다.


index에 관련된 형태로 boolean indexing이 존재한다. 불리언 인덱싱은 우리가 원하는 값이 array에 각각의 성분과 비교하여 맞는지 아닌지를 판단하여 TrueFalse로 나타내는 것을 말한다. 예를 들어 np.arange(10)을 통해 0에서 9까지의 배열을 만들고 arr == 3 이라는 명령을 주게 되면 arr라는 배열에서 3이라는 값을 가진 index에는 True로 나머지 부분에는 모두 False를 나타내는 array가 하나 만들어진다. ==이나 > 와 같은 비교 연산자를 사용하게 되면 데이터를 분석할 때 우리가 원하는 값만을 가져올 수 있게 된다.


NumPy에는 array를 조작하기 위한 다양한 함수를 제공한다. array의 각각의 성분에 적용되는 함수도 존재하고 array의 모든 성분을 가지고 적용시키는 함수도 존재한다. 예를 들어 log()라는 함수의 인자로 array를 넣게 되면 array 내부의 각각의 값들이 모두 log를 계산한 값으로 표시된다.


 

array 모든 성분에 적용하는 함수로는 sum()이나 mean()과 같은 함수들이 있다. 이 함수를 사용하게 되면 모든 성분의 합과 평균을 구해준다. 이 때 axis라는 인자를 통해 행과 열을 구분할 수 있다. axis = 0 이라는 인자를 넣을 경우 각 열에 대한 계산을 하고 axis = 1 이라는 인자를 넣을 경우 각 행에 대한 결과를 내보낸다. 이런 값들은 데이터를 분석할 때 중요한 정보로 사용된다. 또한 sort()함수는 array를 정렬시켜주는 함수로 오름차순으로 정렬을 시켜준다.