KT 에이블스쿨 5일차(1)

박기범·2023년 2월 6일
0

에이블스쿨

목록 보기
7/95
post-custom-banner

파이썬 라이브러리 Numpy 와 Pandas 사용법 익힌 하루


데이터

데이터 분석의 큰 그림 : CSISP-DM
비지니스 이해(문제 이해) => 데이터 이해 => 데이터 전처리 => 모델링(검증) => 평가 => 배포
※큰 틀만 설명을 들었고 자세한 세부사항은 다음 블로그 포스팅할 때 수정하겠습니다.

분석할 수 있는 데이터

기본이 2차원이며, 행에는 하나 하나가 분석단위가 들어오거나 샘플이 들어옵니다.
열에는 정보, 변수, 요인 들이 들어옵니다.



파이썬 넘파이

파이썬의 리스트는 값의 집합이며 요소변경과 추가 제거가 가능합니다. 하지만 데이터 분석에는 처리 속도가 느리다는 단점이 있어서 잘 사용하지 않습니다. 리스트 대신에 파이썬 라이브러리 중 넘파이를 사용해줍니다.

넘파이 사용을 위해 라이브러리를 불러옵니다.

	import numpy as np

import numpy는 numpy 라이브러리를 불러오기 위해 작성했으며 뒤에 as np가 붙는데 이유는 별칭을 따로 설정해 주는 것입니다. 별칭을 주게 되면 numpy를 다 작성하지 않고 np라고만 작성해도 numpy로 인식이 되기 때문에 코드의 길이를 줄일 수 있다는 장점이 있습니다.


넘파이로 배열 만드는 방법

	a = [1,2,3]
    b = np.array(a) #np는 아까 별칭을 주어 numpy를 np로 작성해줄 수 있음
    print(b) #[1,2,3]이 출력됨

2차원 배열로 만드는 방법

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

위처럼 array 함수를 통해 배열을 만들어줄 수 있습니다.


작성한 배열이 몇 차원 배열인지 확인하는 방법

    print(b.ndim) #1차원 배열이라 1이 출력됨
	print(b2.ndim) #2차원 배열이라 2가 출력됨

배열의 모양(형태)를 확인하는 법

    print(b.shape) #(3, )가 출력 
	print(b2.shape) #(2,3)이 출력

2차원 배열같은 경우 2행 3열이라 (2,3)이 출력되고, 1차원 배열은 행 열 개념이 아니고 원소만 3개가 있기 때문에 (3, )가 출력됩니다.


3차원 배열과 같은 경우

    a3 = [[[1, 3, 1], [4, 7, 6], [8, 3, 4]], [[6, 2, 4], [8, 1, 5], [3, 5, 9]]]
    b3 = np.array(a3)
    print(b3.shape) #(2,3,3)이 출력

출력 결과를 살펴보면 2차원 배열이 2개 있으며 3행3열이라 (2,3,3)이 출력됩니다.


모양 재배열 reshape
배열을 사용할 때 다양한 형태로 변환할 수 있게 해줍니다. 배열에 포함된 요소가 사라지지 않는 다면 어떤 형태라도 자유롭게 변환이 가능합니다.

    # (2, 3) 형태의 2차원 배열 만들기
    a = np.array([[1, 2, 3], 
                  [4, 5, 6]])
    # 생성된 배열 확인
    print(a) #[[1 2 3] [4 5 6]]
    # (3, 2) 형태의 2차원 배열로 Reshape
    b = a.reshape(3, 2)
    # 확인
    print(b) #[[1 2] [3 4] [5 6]]

reshape를 사용할 때 -1을 사용할 수 있습니다. 만약 사용한다면 배열의 모양을 지정한대로 알아서 맞춰줍니다.
ex) (m, -1) 또는 (-1, n) 처럼 사용해 행 또는 열 크기 한 쪽만 지정할 수 있습니다.



함수와 메서드

메서드는 특정 변수가 가지고 있는 함수를 말합니다. 예를 들어 평균을 구해주는 함수는 mean()이 있고 합을 구해주는 함수로는 sum()이 있습니다.



배열 데이터 조회

배열을 조회하는 방식으로는 인덱싱슬라이싱이 있습니다.

인덱싱

배열[행, 열] 형태로 특정 위치의 요소를 조회합니다.
배열[[행1,행2,..], :] 또는 배열[[행1,행2,..]] 형태로 특정 행을 조회합니다.
배열[:, [열1,열2,...]] 형태로 특정 열을 조회합니다.
배열[[행1,행2,...], [열1,열2,...]] 형태로 특정 행의 특정 열을 조회합니다.

슬라이싱

배열 [행1:행N,열1:열N] 형태로 지정해 그 위치의 원소를 조회합니다.
조회 결과는 2차원 배열이 됩니다.
리스트와 똑같이 마지막 범위 값은 대상에 포함되지 않습니다.
즉, 배열[1:M, 2:N]이라면 1 ~ M-1행, 2 ~ N-1열이 조회 대상이 됩니다.

조건조회

조건에 맞는 요소를 선택하는 방식이며, 불리안 방식이라고 부릅니다.
조회 결과는 1차원 배열이 됩니다.

배열의 연산

배열의 연산의 사칙연산은 기본 사칙연산과 동일하게 적용됩니다.(단, 행렬의 곱과 나눗셈은 다릅니다)
배열 더하기

    print(x + y)
    # 또는
    print(np.add(x, y))

배열의 집계함수

sum은 배열의 전체 합계를 구해주는 메서드입니다. 열방향 또는 행방향으로도 합을 구할 수 있습니다.

    a = np.array([[1,5,7],[2,3,8]])
    # 전체 합
    print(np.sum(a)) #26이 출력
    # 열기준 합
    print(np.sum(a, axis = 0)) #[3 8 15]가 출력됨
    # 행기준 합
    print(np.sum(a, axis = 1)) #[13 13]가 출려됨

집계함수는 sum말고도 np.argmax(), np.argmin() 도 있습니다.
argmax는 가장 큰 인덱스를 출력합니다.
argmin은 반대로 가장 작은 인덱스를 출력합니다.

    # 배열a는 위에 사용된 a그대로 사용합니다.
    # 전체 중에서 가장 큰 값의 인덱스
    print(np.argmax(a))
    # 행 방향 최대값의 인덱스
    print(np.argmax(a, axis = 0))
    # 열 방향 최대값의 인덱스
    print(np.argmax(a, axis = 1))

※조건에 따라 값을 지정해주는 np.where( 조건문, 참일 때 값, 거짓일 때 값) 라는 문법도 있음







5일차에는 파이썬 라이브러리인 넘파이와 판다스를 공부했습니다 판다스는 다음 블로그에 작성하겠습니다.




※공부하고 있어 다소 틀린점이 있을 수 있습니다. 언제든지 말해주시면 수정하도록 하겠습니다.
※용어에 대해 조금 공부 더 해서 수정하겠습니다.

profile
개발자가 되기 위한 한걸음
post-custom-banner

0개의 댓글