기초 통계 함수 이전 알아야 할 개념 : axis

 

axis?

다차원 배열의 차원을 나타내는 매개변수.

각 차원(axis)에 따라 연산이 수행되거나 배열의 모양(shape)이 결정된다. axis는 일반적으로 numpy 함수의 매개변수로 사용됩니다. 예를 들어, numpy.sum() 함수의 경우 axis 매개변수는 어느 축(axis)을 따라 합산을 수행할지 지정한다.

 

axis의 값은 정수이며, 배열의 차원 수에 따라 다릅니다. 예를 들어, 2차원 배열의 경우 axis=0은 행(row) 방향을 의미하고, axis=1은 열(column) 방향을 의미한다. axis=-1은 마지막 차원(axis)을 나타내며, axis=None은 모든 요소를 합산하거나 연산하는 것을 의미한다.

 

즉 연산기능을 쓸 때 axis = 0일때는 세로축을 구하고, axis = 1일때는 가로축 값을 구한다


대표적인 기초 통계 함수 

sum 합계
mean 평균
std 표준 편차: 데이터들이 기준선에 가까운지 측정할 때 주로 사용하며 정확성을 판단할 때 사용. 허나 데이터가 기준선에 촘촘히 붙어있어보여도 데이터 자체 크기가 크지 않아 설득력 없는 자료일 때도 있으니 유의할 것
var 분산(std의 제곱), 데이터의 크기가 크지 않을 때 더 자세히 볼 수 있게 해준다
min 최소값
max 최대값

 

 

예시1. 전체 데이터의 합계 / 동일한 항목끼리의 합계 / 동일한 항목끼리의 평균값

print(redwine.sum()) 
print(redwine.sum(axis=0))            
print(redwine.mean(axis=0))

 

예시2. 각 데이터 항목별 최고점/ 최저점만 뽑기

print(redwine.max(axis=0))             # 최고 점수만 뽑기
print(redwine.min(axis=0))             # 최저 점수만 뽑기

예시3. 0번축만(첫번째 column) 평균 구하기

print(redwine[:,0].mean())                # 전체 데이터 출력인데 0으로 슬라이스 기법으로 0번축만, 평균을 구해라

 

Numpy로 데이터 불러오기

1.colab에서 csv 파일을 불러오고 싶다면 그냥 폴더 창에 드래그 드롭을 해주면 된다.

2. 그 후 np.loadtxt(fname='', delimiter = '', skiprows =n) 로 파일을 불러와준다.

여기서 fname은 파일 이름, delimiter은 파일에서 데이터의 구분자(, 이나 ;), skiprow는 n번째 줄은 건너뛰라는 명령이다.

 


<예시용 데이터>

이번 예시에서는 위와 같은 와인에 대한 데이터를 불러와본다.

 

redwine = np.loadtxt(fname = 'winequality-red.csv', delimiter=';', skiprows=1)

△예시용으로 위 파일을 불러올 때 일단 부르기 쉽게 redwine으로 변수명을 지정해주었다.

<fname> 파일이름을 넣어주고 <delimeter>그 파일의 구분자는 ;이었다.

그리고<skiprows> 첫번째줄은 와인 기준에 대한 나열이라 필요가 없다.

오히려 있으면 숫자가 아니라 파일을 불러올 수 없기 때문이다.

이번에 사용할 예시 배열

arr = np.array([[1,2,3],
                [4,5,6],
                [7,8,9]])

 

세 가지 방법으로 위에 배열에서 필요한 요소만 잘라내보자.


1. ndarray를 슬라이싱 하는 첫번째 방법은 가로 세로 줄을 그려 영역을 crop하는 느낌이라고 생각하면 된다.

    [n:c , n1:c1] n:c만큼 가로로 먼저 영역 긋고 n1:c1만큼 또 세로로 영역을 긋는 것이다.

arr_1 = arr[:2,1:3]            # [:2]= 위에서 아래로 0에서 2이전 까지 이동, [1:3] = 좌에서 우로 1에서 3 이전까지 이동 해서 슬라이싱
print(arr_1)

출력>
[[2 3]
 [5 6]]

 

2. 내가 원하는 요소를 바로 가져오는 방법 : 배열이름[N, N1] 여기사 N은 배열, N1은 인덱스 넘버

arr = np.array([[1,2,3],
               [4,5,6],
               [7,8,9]])


arr [0,2]              # 배열0번의 2번째 데이터 가져와라

출력>
3

 

 

3. 조건을 달아서 조건에 맞는 데이터/안맞는 데이터로 나눈 후 참인 것만 나오게 하는 방법

arr = np.array([[1,2,3],[4,5,6]])
idx = arr > 3                   # arr에서 3이상인것    조건식을 달면 조건에 따른 값 따로 나타난다
print(idx)
[[False False False]                    #위의 print의 결과
 [ True  True  True]]              
arr[idx]                                    # 이 조건을 배열 옆에 각진괄호 안에 써준다!


출력>
array([4, 5, 6])                       # 조건식에 참인 데이터만 나온다

np 배열은 같은 차원(위치) 데이터끼리 연산이 된다. 아래 예시로 여러 방식으로 배열간의 연산을 해보자.


첫 번째 방법: array끼리 연산자로 계산식 써주기

 

(예시1)

arr1 = np.array([[1,2],[3,4]])
arr2 = np.array([[5,6],[7,8]])
print(arr1 + arr2)                       
print(arr1 - arr2)
print(arr1 * arr2)

출력>
[[ 6  8]
 [10 12]]
[[-4 -4]
 [-4 -4]]
[[ 5 12]
 [21 32]]

 

 

두 번째 방법: 명령어로 연산식 써주기

 

(예시2)

print(np.add(arr1,arr2))                     
print(np.multiply(arr1,arr2))

출력>
[[ 6  8]
 [10 12]]
[[ 5 12]
 [21 32]]

ndarray 배열의 타입을 바꿀 때 : <array name>.astype(np.type)

 

예시1. 데이터 타입int64 array를 float64로 바꿀때

arr_int = np.array([1,2,3,4])
print(arr_int.dtype)                           # 이 때 데이터는 int이다
arr_float = arr_int.astype(np.float64)    # 데이터 타입을 바꿔야할 때
print(arr_float.dtype)

예시2. 데이터 타입을 str에서 int64로 바꿀 때

arr_str = np.array(['1','2','3','4'])                # 문자열로 배열 만들기
print(arr_str.dtype)                                #  출력에 U1이라 나오는 것은 유니코드(문자)를 나타낸것
arr_int = arr_str.astype(np.int64)
print(arr_int.dtype)

ndarray?

n차원(dimension) 배열을 뜻한다.

 


예제로 사용할 배열

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

1. 배열의 차원을 확인하는 방법 : (어레이).ndim

arr.ndim    

출력 : 2

2. 데이터의 모양을 확인하는 방법 : (어레이).shape

arr.shape

출력: (2,3)

3. 데이터 타입의 확인

print(type(arr))               # 배열의 데이터 타입 확인
print(arr.dtype)               # 배열 안의 데이터 타입 확인

출력 : <class 'numpy.ndarray'>
           int64

'python > [modules] Numpy' 카테고리의 다른 글

6. ndarray 배열 슬라이싱 하기, 특정 데이터만 골라내기  (0) 2023.04.26
5. Numpy 배열의 연산  (0) 2023.04.26
4. ndarray 배열의 타입 전환  (0) 2023.04.26
2. Numpy 배열 만들기  (0) 2023.04.26
1.Numpy란?  (0) 2023.04.26

+ Recent posts