brunch

You can make anything
by writing

C.S.Lewis

by 박경아 Apr 02. 2021

14. 통계를 위한 파이썬 라이브러리, 넘파이 (2)

파이썬으로 데이터 분석하기

앞서 어레이를 리스트와 비교하며 그 속성에 대해 알아보았다. 또한, 리스트에 리스트를 넣어 2차원 혹은 3차원 어레이를 만들어 간단한 사칙연산과 행렬곱 등의 연산도 실행해 보았다. 이번에는 어레이를 만드는 또 다른 다양한 방법과 어레이를 다루는 방법, 그리고 넘파이 어레이를 활용해 기초통계를 내보는 연습을 해보자.



어레이를 생성하는 다양한 방법


np.array( )에 직접 리스트를 넣어 어레이를 생성하거나 리스트에 변수를 할당한 뒤 np.array( )에 변수를 넣어 어레이를 생성하는 법을 공부했다. 그 외에도 원하는 어레이를 손쉽게 생성할 수도록 도와주는 함수들을 알아보자.


np.zeros 함수는 정해진 모양에 따라 요소를 모두 0으로 채운 어레이를 생성한다.


np.ones를 사용하면? 그렇다. 요소를  모두 1로 채운 어레이 데이터를 생성할 수 있다. np.empty는 메모리 상태에 따라 랜덤으로 어레이를 생성해 준다.


np.arange는 리스트의 range 함수가 자동으로 리스트를 채웠던 것처럼 자동으로 어레이 데이터를 채워준다. (그래서 range 앞에 에레이의 a가 붙었다는?...) 그리고 새로 등장한 것이 np.linspace인데 range 혹은  arange 함수가 일정한 범위에서 지정한 간격으로 수를 채워준다면, 이 함수는 생성하고 싶은 개수를 지정할 수 있다.

np.arange vs. np.linspace



넘파이 어레이 조작법


어레이를 다양하게 생성했다면 이제 다루는 법을 배워보자. 어레이 역시 리스트와 마찬가지로 인덱싱이나 슬라이싱, 그리고 요소를 추가하거나 삭제하는 것이 가능하다. 다만, 앞서 말했듯 리스트가 요소를 추가하거나 삭제하면 그 값이 변경된 값으로 업데이트되지만, 어레이는 새로운 변수를 할당하지 않는 이상 요소의 개수에 변화는 없다.


1차원 어레이의 인덱싱이나 슬라이싱은 리스트와 같다고 할 수 있다. 파이썬은 항상 0부터 시작하고, 슬라이싱에서 마지막 번호는 포함되지 않는다. 2차원 이상 다차원 어레이의 경우 차원 수마다 그 인덱스 번호를 콤마로 구분해 넣어줘야 한다. 그 차원(축) 전체를 선택하고 싶다면 : (콜론)을 써도 된다. 


2차원 수배열에서 원소 선택하는 방법

new_array[row, columm]  (인덱싱)
new_array[0:2, 1]   (슬라이싱)

5 x 4 모양의 2차원 어레이

위의 2차원 어레이 데이터에서 첫 번째 행의 마지막 열 데이터를 출력하고 싶다면? a[0, 3]으로 행과 열의 인덱스를 각각 써주어야 한다. 모든 행의 두 번째 열의 값을 출력하고 싶다면? 행은 슬라이싱으로 모두 선택하거나 : (콜론)을 써주고 열은 두번 째 이므로 1번을 쓰면 된다.

어레이 인덱싱 & 슬라이싱


리스트와 마찬가지로 인덱싱을 통해 해당 자리의 값을 출력할 수도 있지만 새로운 수를 입력할 수도 있다. 아래 예와 같이 모든 행의 마지막 자리에 수에 2를 입력하면 어레이 요소 값이 모두 변경된 것을 볼 수 있다.

모든 행의 마지막 자리 수를 2로 바꿈


다음은 어레이에 새로운 값을 추가하거나 삭제하거나 어레이를 합칠 수 있는 넘파이 함수들이다.

np.append(array, value) - 어레이의 마지막에 값 추가하기
np.insert(array, index, value) - 어레이의 해당 인덱스에 값 추가하기
np.delete(array, index, axis =0) - 어레이의 해당 인덱스 행 삭제하기
np.delete(array, index, axis =1) - 어레이의 해당 인덱스 열 삭제하기
np.concatenate((array1, array2), axis=0) - 어레이1의 끝에 array2를 행으로 추가하기
np.concatenate((array1, array2), axis=1) - 어레이1의 끝에 array2를 열으로 추가하기



넘파이를 활용한 기초통계


마지막으로 넘파이를 활용해 학교 다닐 때 배운 간단한 통계를 연습해 보자. 넘파이 어레이 데이터를 만들고  평균과 아웃라이어, 중앙값, 표준편차, 퍼센타일,히스토그램을 구해 보는 것이다.


1) 평균

np.mean(array) or array.mean( )


2) 아웃라이어 - 평균을 훨씬 벗어나는 값. 데이터 오류인지 의미있는 이탈인지 살펴보아야 한다.

np.sort(array) or array.sort( )


3) 중앙값 - 크기 순으로 정렬했을 때 중앙에 있는 값

np.median 


4) n퍼센타일 - n%의 데이터가 해당값보다 작은 값임을 나타낸다. 즉, 상위 (100-n)%값

np.percentile (a, 75)


5) 표준편차 (Standard deviation) - 평균을 중심으로 값들이 얼마나 퍼져 있는지를 나타내는 수치

np.std or array.std( )


6) 히스토그램

측정값이 존재하는 범위를 몇 개의 구간으로 나눈 경우, 각 구간을 밑변으로 하고 그 구간에 속하는 측정값의 개수에 비례하는 면적을 갖는 기둥(직사각형)으로 나타낸 그림. 역시 값들의 분포를 파악할 수 있다.



넘파이 어레이 연습하러 가기 (2)

https://www.kaggle.com/kyungapark/python-basic-numpy-operations




* 참고자료

What is Numpy?

https://numpy.org/doc/stable/user/whatisnumpy.html

Numpy quickstart

https://numpy.org/doc/stable/user/quickstart.html

넘파이 사용법 알아보기

https://laboputer.github.io/machine-learning/2020/04/25/numpy-quickstart/

핵심만 간단히, Hello World! 파이썬 3 - 데이터 분석을 위한 3종 패키지(numpy, pandas, matplotlib)

https://wikidocs.net/21047


매거진의 이전글 13. 통계를 위한 파이썬 라이브러리, 넘파이 (1)
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari