데이터 분석이라 함은,,
응당 마주할 수 밖에 없는 패키지가 Numpy 와 Pandas 라고 생각된다
원래는 단순히 import numpy as np를 기계적으로 치고서는 뭐가 들어있는지 제대로 파악도 못한 채
쓸 때마다 " 아,, 이런 게 있었구나 " 하면서 그때 그때 알아가고는 했는데
이번 빅데이터 분석 기사를 치고 나서 내가 사용하는 패키지에 대해 잘 알아두는 것도 굉장히 중요하다는 생각이 들었다
함수는 알아도 어디 패키지인지 몰라서 np.dropna, pd.dropna, df.dropna등.. 엄청나게 난리를 쳤기 때문
이번은 numpy에 대한 간략한 설명과 어떤 기능을 담고 있는지 살펴볼 것이다!
Numpy
다차원 배열의 연산기능을 모아놓은 꾸러미이며, 수치 연산을 위한 다양한 기능을 담고 있는 패키지이다
import numpy as np
배열 ( array )
연속적으로 데이터를 담을 수 있는 객체이며 array라고 쓴다
array([0,1,2,3])
array(['I','my','me','mine'])
- 배열은 같은 종류의 데이터만 담을 수 있다
- 배열은 차원을 갖는다 ( 1차원, 2차원, 3차원 ,,)
- 배열은 빠르고 간단하게 연산 처리가 가능하다
배열만들기
※ 배열 생성 함수
- np.array() : 초기화 할 값을 지정하여 배열 생성
import numpy as np
list1 = [1,2,3]
arr1 = np.array(list1)
print(arr1)
- np.zeros() : 값을 0으로 초기화하여 배열 생성
np.zeros(5)
np.zeros((2,3)) #2행 3열이면서 0으로 채워진 배열
- np.ones() : 값을 1로 초기화 하여 배열 생성
np.ones(7)
- np.arange() : 수의 순차적인 증감을 이용하여 배열 생성
np.arange(10)
np.arange(20,30,2) # 20에서 30까지 2씩 증가
- np.rand() : 랜덤한 숫자로 배열 생성
np.random.rand(2,3) # 랜덤한 값으로 채워진 2행 3열 배열
- reshape() : 배열의 차원을 변형 ( 분석 시에도 자주 쓰임 ! )
arr2 = np.arange(16)
arr2
arr2.reshape(4,4) # 2차원 4행 4열
arr2.reshape(2,2,4) # 3차원 2행 4열
인덱스로 원하는 값 선택
배열도 리스트와 마찬가지로 인덱스를 이용하여 원하는 값을 선택하거나, 마이너스 인덱스, 콜론(:)을 이용할 수 있다
import numpy as np
arr = np.arange(16)
arr
#기본 인덱스
arr[5]
#마이너스 인덱스 ( 맨 마지막 객체 )
arr[-1]
# 인덱스 범위
arr[5:8]
# 선택한 값에 새로운 값 할당
arr[5] = 100
arr[6:8] = [200,201]
arr
# 다차원 배열
arr2 = np.array(16).reshape(4,4)
arr2[1]
arr2[1][1] # 1행 1열에 해당하는 값
arr2[1,1] # 위 코드와 같음
arr2[1,2] = 100
arr2[0:2]
# 불리언 인덱스
불리언 인덱스는 특히나 빅데이터 분석 기사를 준비하면서,, 기초가 부족하다고 많이 깨달은 파트다
문제대로 다 풀었는데 결론적으로 True인 값의 개수를 산출을 못하는 ,,,,🙄
그 점에서 충격받고 기초를 다시 시작한 게 크다!
# 성적이 들어있는 배열에서 90점 이상의 점수만 선택
scores =[80,90,70,65,85,95,90,80,75,80]
score_arr = np.array(scores)
score_arr >= 90
score_arr[score_arr >= 90]
# 90점 이상인 값을 999점으로 바꾸어 줌
score_arr[score_arr >= 90] = 999
score_arr
# 빅분기 시험에서는,,, 90점 이상인 값의 개수를 구해라?
print((score_arr>=90).sum) # 3개
연산
Numpy는 다양한 연산 기능을 가지고 있으며, 이는 데이터 분석 시에 유용하게 사용되므로 필수적으로 숙지해야 한다
특히 리스트와 배열의 연산 결과가 상이하므로 유의할 필요가 있다
## 배열
arr = np.arange(1,5)
arr+2 # 모든 값에 2가 더해진다
arr*2 # 모든 값에 2가 곱해진다
arr1 = np.arange(5,9)
arr1 + arr1 # 같은 위치에 있는 값끼리 더해진다
## 리스트
list = [1,2,3,4]
list*2 # 1,2,3,4라는 값이 2개 생겨난다
list1 = [5,6,7,8]
list + list1 # list값 뒤에 list1값이 이어붙는다
# Numpy의 다양한 연산
# 제곱
np.square(arr)
# 제곱근 (루트)
np.sqrt(arr)
# 지수승
np.exp(arr)
# 로그
np.log(arr)
# 더하기
np.add(arr, arr1)
# 합계
np.sum(arr)
# 누적합
np.cumsum(arr)
# 평균
np.mean(arr)
# 분산
np.var(arr)
# 표준편차
np.std(arr)
# 최소값
np.min(arr)
# 최대값
np.max(arr)
변형 (reshape(), transpose())
배열의 차원과 모양을 바꾸는 reshape도 분석 시에 자주 사용되고, 특히 기존 배열의 축을 바꾸는 방법인 transpose()는 3회차 빅데이터 분석 기사에서 사용될 수 있었던 함수로 나왔다 물론 나는 해당 함수를 몰라서 야매로 풀어냈지만,,
# 2차원
arr = np.arange(10).reshape(2,5)
arr.transpose() # 그러면 앞서 설정된 2행 5열 -> 5행 2열로 바뀜
# 3차원
arr3d = np.arange(27).reshape(3,3,3)
arr3d
'python > 파이썬 기초' 카테고리의 다른 글
[python] 공공 데이터 포털 API 불러오기 (0) | 2022.01.24 |
---|---|
[python 쌩기초] 함수 / 람다 (0) | 2021.12.17 |
[python 쌩기초] 조건문 / 반복문 (0) | 2021.12.17 |