안녕하세요 여몽의 눈동자입니다.
이번에는 파이썬에서 각종 모듈들을 불러오고 사용하는 방법에 대해 알아보겠습니다. 모듈은 간단히 말하자면 여러가지 관련된 함수들을 모아놓은 집합이라고 할 수 있습니다. 파이썬에서는 기본으로 제공하는 함수도 있는 반면에 (예: print(), input(), len()) 특정한 모듈에 포함되어 있어 해당 모듈을 미리 불러와야만 사용가능한 함수들도 있습니다.
자주 사용되는 모듈의 예 (특히 데이터 분석을 위해)는 다음과 같습니다.
- NumPy : 수학/공학적 연산을 위한 함수들을 많이 포함하고 있습니다.
- Pandas : 데이터의 가공 및 해석을 위한 다양한 툴을 제공하는 모듈입니다. 파이썬에서 마치 엑셀을 다루듯이 데이터를 처리하고 분석할 수 있게 합니다.
- Math : 다양한 수학 함수들을 포괄하고 있는 모듈입니다.
1. 모듈 불러오기 (Importing modules)
Python의 import문을 통해 간단히 모듈을 불러올 수 있습니다.
# Module import
import numpy
numpy.cos(1.0)
함수를 호출할 때 numpy라는 모듈이름을 먼저 붙여줍니다. 이렇게 모듈이름을 먼저 붙여줌에 따라 해당함수가 어떤 모듈에서 왔는지를 쉽게 구별 할 수 있습니다. 함수를 실행하면 다음과 같은 결과값을 얻을 수 있습니다.
In [1]: import numpy
...:
...: numpy.cos(1.0)
Out[1]: 0.5403023058681397
코사인함수는 math라는 모듈에도 포함되어 있습니다.
import math
math.cos(1.0)
실행결과는 다음과 같습니다.
In [2]: import math
...:
...: math.cos(1.0)
Out[2]: 0.5403023058681397
한번에 여러개의 모듈을 불러올 수도 있습니다.
import math, sys, random
math.sin(1.0)
random.randint(1,10)
In [10]: math.sin(1.0)
Out[10]: 0.8414709848078965
In [11]: random.randint(1,10)
Out[11]: 9
만약 모듈이름을 생략하고 싶다면 다음과 같이 from을 이용해 함수를 불러옵니다.
from numpy import sin
sin(2+3j)
이 경우 모듈이름을 앞에 붙이지 않고 바로 함수를 사용가능합니다.
In [6]: from numpy import sin
...:
...: sin(2+3j)
Out[6]: (9.15449914691143-4.168906959966565j)
해당 모듈의 모든 함수를 불러오려면 *를 사용합니다.
from numpy import *
In [13]: cos(2+3j)
Out[13]: (-4.189625690968807-9.109227893755337j)
그러나 사실 이 방법은 그리 추천되는 방법은 아닙니다. 왜냐하면 각 모듈에 소속된 함수들이 서로 충돌을 일으킬 수 있으며 같은 이름을 가진 함수라 하더라도 다른 모듈에서 왔다면 완전히 다른 특성을 가질 수 있기 때문입니다. 예를 들어, math 모듈의 코사인 함수와 numpy모듈의 코사인 함수는 엄밀히 말해 각자 다른 모듈에 속해있는 다른 함수 입니다. 예를 들어 math 모듈의 코사인 함수는 복소수를 입력변수로 갖지 못하지만 numpy모듈의 코사인함수는 복소수를 입력변수로 포함합니다.
아래의 예를 보면 numpy 모듈의 코사인함수에서는 복소수 입력변수가 에러를 발생시키지 않지만 math 모듈의 코사인함수는 에러를 발생시키는 것을 볼 수 있습니다.
In [4]: numpy.cos(1+3j)
Out[4]: (5.4395809910197634-8.429751080849945j)
In [5]: math.cos(1+3j)
Traceback (most recent call last):
File "<ipython-input-5-a09d1ee1acd6>", line 1, in <module>
math.cos(1+3j)
TypeError: can't convert complex to float
모듈의 이름이 길때는 as를 이용해서 다른 이름을 지정할 수도 있습니다.
import numpy as np
np.tan(2.0)
In [14]: import numpy as np
...:
...: np.tan(2.0)
Out[14]: -2.185039863261519
댓글
댓글 쓰기