K-MooC/파이썬 기반 빅데이터 처리 및 분석 기술

[ Python ] Numpy 이해하기 1

황성안 2021. 7. 18. 22:31
728x90

Numpy 이해하기

1. 빅데이터 분석 및 처리

1) 프로그래밍 언어

  • 빅데이터의 정의 : DBMS와 같은 데이터 관리 기법으로 관리하기가 어려운 데이터
  • R studio : 통계 계산과 그래픽을 위한 프로그래밍 언어, 소프트웨어 환경이다. 다양한 통계 기법과 수치 해석 기법을 지원한다
  • Python : 이해하기 쉽고 유연한 문법, 다양한 라이브러리로 연산능력을 극대화 시켜준다. 높은 접근성을 갖는 특징이있다.

2) 파이썬

빅데이터 분야에서 파이썬을 사용하는 이유는 유연성과 다양 패키지가 목적에 맞게 개발돼있기떄문이다.

빅데이터 기본 프로그래밍 도구

  • Numpy : 동일한 데이터 타입을 가진 배열 기반의 데이터 처리
  • Pandas data frame 형태로 데이터를 다룸
  • Scipy : 과학 계산 작업
  • Matplotlib : 데이터 시각화
  • Scikit-Learn : 머신러닝

2. 데이터 자장 및 가공

1) 데이터 분석

  • 원본 데이터를 숫자 배열로 변환한다
  • 편한 방식의 연산 적용
  • 연산 결과를 다루기 쉬운 형태로 변환한다.
  • 숫자 배열을 효율적으로 저장하고 가공하는 것은 빅데이터 분석을 위한 절차
  • 숫자 배열을 전문적으로 다루는 Numpy 패키지가 필요하다

3. Numpy 패키지

1) 넘파이

  • 특징 : array 단위로 데이터 관리 및 연산 수행
    • array 란? : 동일한 데이터 타입을 갖는 벡터나 행렬
  • 배열 규모가 커질수록 데이터 저장 및 처리에 효율적

4. 행렬 생성

1) 넘파이 패키지 임포트

별칭으로 np 를 사용합니다.

import numpy as np

2) array 정의와 사용 방법

  • 데이터 생성하기

data1 생성

data2 생성

data1, data2 출력

data1 = [1,2,3,4,5]
data2 = [6,5,4,3,2,1]
print(data1, data2)
  • numpy 배열 할당하기

data1의 데이터를 ar1이라는 변수에 numpy 배열을 만들어 할당합니다.

array([1,2,3,4,5])를 출력합니다.

ar1 = np.array(data1)
ar1
  • 데이터 타입을 함께 할당해주기

data1의 데이터를 float32라는 데이터 타입과 함께 numpy 배열을 ar2에 할당해줍니다.

array([1.,2.,3.,4.,5.], dtype=float32 ) 출력

ar2 = np.array(data1, dtype='float32')
ar2
  • 다차원 배열 초기화

리스트를 사용하여 다차원 배열을 초기화하는 코드

5*3 행렬을 만들어 ar3에 넣는다.

array([[1,2,3],

​ [2,3,4],

​ [3,4,5],

​ [4,5,6],

​ [5,6,7]]) 출력

ar3 = np.array([range(i, i + 3) for i in data1 ])
ar3
  • full 함수

full 함수 ((행렬 크기), 지정 값)

ar4에 full 함수를 저장시켜줍니다

array([[3.14, 3.14, 3.14, 3.14, 3.14],

​ [3.14, 3.14, 3.14, 3.14, 3.14],

​ [3.14, 3.14, 3.14, 3.14, 3.14]])

ar4 = np.full((3,5), 3.14)
ar4
  • arange 함수

ar5에 0~20까지 2씩 더하는 것을 배열로 만들어 넣어봅니다.

array([0, 2, 4, 6, 8, 10, 12, 14, 16, 18])

ar5=np.arange(0, 20, 2)
ar5
  • linspace 함수

ar6 에 0, 1 사이 일정한 간격을 가진 세개의 값으로 채운 배열을 넣는다.

array([0. , 0.5, 1. ]) 출력

ar6 = np.linspace(0, 1, 3)
ar6
  • random 함수

ar7에 3*3 행렬의 0과 1사이의 무작위 값으로 채워 넣습니다.

array([[0.185948, 0.185948987, 0.9783541],

​ [0.898354, 0.9181546, 0.783548989],

​ [0.515213, 0.,9873215, 0.879213310]]) 출력

ar7 = np.random.random((3, 3))ar7
  • randint() 함수

ar8에 3*3 행렬로 0에서 100사이 랜덤한 숫자로 행렬을 넣는다.

array([[1, 5, 18],

​ [99, 86, 11],

​ [20,65,21]])

ar8 = np.random.randint(0, 100, (3, 3))
ar8
  • eye() 함수

ar9에 3행렬에 0과 1로 구성돼있으며 1이 대각선으로 이뤄지게된 행렬을 넣는다

array([[1., 0., 0.],

​ [0., 1., 0.],

​ [0., 0., 1.]])

ar9 = np.eye(3)
ar9

5. Numpy 표준 데이터 타입

  • bool_ : 1바이트로 저장된 부울 값(참 또는 거짓)
  • int_ : 기본 정수 타입(C long과 같음. 일반적으로 int64 또는 int32)
  • intc : C int와 동일(일반적으로 일반적으로 int32 또는 int64)
  • intp : 인덱싱에 사용하는 정수(C ssize_t와 동일. 일반적으로 int32 또는 int64)
  • int8 : 바이트(-128 ~ 127)
  • int16 : 정수(-32768~32767)
  • int32 : 정수(-2147483648~2147483647)
  • int64 : 정수(-9223372036854775808~9223372036854775807)
  • uint8 : 부호 없는 정수(0~255)
  • uint16 : 부호 없는 정수(0~65535)
  • uint32 : 부호 없는 정수(0~4294967295)
  • uint64 : 부호 없는 정수(0~18446744073709551615)
  • float_ : float64의 약칭
  • float16 : 반정밀 부동 소수점: 부호 비트, 5비트 지수, 10비트 기수
  • float32 : 단정밀 부동 소수점: 부호 비트, 8비트 지수, 23비트 기수
  • float64 : 배정밀 부동 소수점: 부호 비트, 11비트 지수, 53비트 기수
  • complex_ : complex128의 약칭
  • complex64 : 복소수, 두 개의 32비트 부동 소수점으로 표현
  • complex128 : 복소수, 두 개의 64비트 부동 소수점으로 표현
728x90