AI실무 기본과정 - 데이터 분석을 위한 라이브러리 step 1

2021. 12. 14. 11:26Programming/Python

 

 

[1] 모듈만들기 및 가져다 쓰기 예제

ex) *CodeEditor

#cal.py (Module Make)

def plus(a, b):
    return a+b
def minus(a, b):
    return a-b
modelName = "ELI-C2"



#main.py (Module Import)

import cal
var1 = cal.modelName
var2 = cal.plus(3,4)
var3 = cal.minus(7,2)
## 변수의 값을 확인하는 출력문입니다.
print(var1, var2, var3)

 

*Console

ELI-C2 7 5
코드 실행이 완료되었습니다.
 

[2] 모듈을 가져다쓰는 두가지 방식 예제

ex)*CodeEditor

from random import randrange
import math
var1 = randrange(1, 11)
var2 = math.log(5184, 72)
print(var1, var2)

*Console

3 2.0
코드 실행이 완료되었습니다.
 
 

[3] 파이썬 내장함수로 외부사이트 HTML파일 가져오기

ex)라이브러리 참조 및 함수 연속사용(.접근자로 함수를 연속으로사용 가능하다.)

  1. from-import를 이용해서 urllib패키지 안 request 모듈에서 urlopen 함수를 불러오는 코드를 작성해봅시다.
  2. 다음 주소를 urlopen하고, read() 한 다음, 이를 utf-8으로 decode 한 결과를 변수 webpage에 넣어봅시다.
  3. https://en.wikipedia.org/wiki/Lorem_ipsum Copy
  4. 변수 webpage를 출력해봅시다. 무엇이 나오나요?

* CodeEditor

from urllib.request import urlopen

webpage = urlopen("https://en.wikipedia.org/wiki/Lorem_ipsum").read().decode("utf-8")
print(webpage)

 

*Console

해당 Url의 Html파일이 호출된다. 어떤 사이트 정보든 가져오기가능.

 

*****TIP*****

  • urlopen() : 이 함수에 url을 넣으면 해당 url에 접근한 결과를 얻을 수 있습니다.
  • read() : 결과를 해독하여 문자열로 반환합니다.
  • decode() : 문자열을 특정 인코딩 방식으로 해독합니다. (유니코드, 아스키 코드 등)

 

 

shape 속성은 1차원일때는 해당 배열의 길이 그외엔 대부분 배열의 수를 나타낸다.

shape(갯수,행,렬) 순서로 표시됨

 

[1] Numpy 배열 생성 예제

ex)*CodeEditor

import numpy as np

# 0부터 4까지 연속적인 숫자가 들어있는 배열을 만들어 봅시다!
array = np.array(range(5))

 

[2] 상단에 Numpy로 배열생성법을 알아봤고, ndarray(n차원배열)의 속성값들을 알아보자.

ex)*CodeEditor

import numpy as np

print("1차원 array")
array = np.array(range(10))
print(array)


# 1. array의 자료형을 출력해보세요.
print(type(array))
# 2. array의 차원을 출력해보세요.
print(array.ndim)
# 3. array의 모양을 출력해보세요.
print(array.shape)
# 4. array의 크기를 출력해보세요.
print(array.size)
# 5. array의 dtype(data type)을 출력해보세요.
print(array.dtype)
# 6. array의 인덱스 5의 요소를 출력해보세요.
print(array[5])
# 7. array의 인덱스 3의 요소부터 인덱스 5 요소까지 출력해보세요.
print(array[3:6])

 

*Console

1차원 array

 

[0 1 2 3 4 5 6 7 8 9]

 

<class 'numpy.ndarray'>

 

1

 

(10,)

 

10

 

int64

 

5

 

[3 4 5]
 
 

[3] 위에서 1차원 배열에 대한 값들을 알아봤다면, 2차원 배열에 대한 속성값들을 알아보자.

ex)*CodeEditor

import numpy as np

print("2차원 array")
#1부터 15까지 들어있는 (3,5)짜리 배열을 만듭니다.
matrix = np.array(range(1,16))
matrix.shape = 3,5
print(matrix)

# 1. matrix의 자료형을 출력해보세요.
print(type(matrix))
# 2. matrix의 차원을 출력해보세요.
print(matrix.ndim)
# 3. matrix의 모양을 출력해보세요.
print(matrix.shape)
# 4. matrix의 크기를 출력해보세요.
print(matrix.size)
# 5. matrix의 dtype(data type)을 출력해보세요.
print(matrix.dtype)
# 6. matrix의 dtype을 str로 변경하여 출력해보세요.
print(matrix.astype('str'))
# 7. matrix의 (2,3) 인덱스의 요소를 출력해보세요.
print(matrix[2,3])
# 8. matrix의 행은 인덱스 0부터 인덱스 1까지, 열은 인덱스 1부터 인덱스 3까지 출력해보세요.
print(matrix[0:2,1:4])

*Console

2차원 array

 

[[ 1 2 3 4 5]
[ 6 7 8 9 10]
[11 12 13 14 15]]

 

<class 'numpy.ndarray'>

 

2

 

(3, 5)

 

15

 

int64

 

[['1' '2' '3' '4' '5']
['6' '7' '8' '9' '10']
['11' '12' '13' '14' '15']]

 

14

 

[[2 3 4]
[7 8 9]]

 

 
 

[4] 배열의 Indexing & Slicing 예제

ex)CodeEditor

import numpy as np

matrix = np.arange(1, 13, 1).reshape(3, 4)
print(matrix)

# 1. Indexing을 통해 값 2를 출력해보세요.
answer1 = matrix[0,1]
# 2. Slicing을 통해 매트릭스 일부인 9, 10을 가져와 출력해보세요.
answer2 = matrix[2:, :2]
# 3. Boolean indexing을 통해 5보다 작은 수를 찾아 출력해보세요.
answer3 = matrix[matrix<5]
# 4. Fancy indexing을 통해 두 번째 행만 추출하여 출력해보세요.
answer4 = matrix[[1]]
# 위에서 구한 정답을 출력해봅시다.
print(answer1)
print(answer2)
print(answer3)
print(answer4)

 

*Console

[[ 1 2 3 4]

 [ 5 6 7 8]

 [ 9 10 11 12]]

 

2

 

[[ 9 10]]

 

[1 2 3 4]

 

[[5 6 7 8]]

 

 

*TIP

배열의 인덱스를 활용하여 값을 찾아내거나 배열의 일부분을 가져올 수 있습니다. 이를 Indexing & Slicing이라 합니다.

x = np.arang(7)
print(x[3])  # 3
print(x[1:4]  # [1 2 3]

Boolean mask를 이용하여 원하는 값을 추출하는 것은 Boolean indexing이라 합니다.

x = np.arange(7)
print(x[x < 3])  # [0 1 2]
print(x[x % 2 == 0])  # [2 4 6]

배열의 각 요소 선택을 Index 배열을 전달하여 지정하는 방식은 Fancy indexing이라 합니다.

x = np.arange(7)
print(x[[1, 3, 5]]  # [1 3 5]