주피터 노트북은 데이터 분석을 쉽게 하도록 도와준다. 이전의 분석 결과를 확인하고, plotly패키지와 같이 사용하여 대화형 시각화 분석도 가능하다. 익스텐션을 추가로 설치하면 더 유용하게 사용할 수 있다. 익스텐션은 파이참의 플러그인과 비슷한 기능이다. 오늘은 주피터 노트북 사용법 중의 interact 모듈을 사용하는 방법에 대해서 알아보도록 하겠다.

 

 

주피터 노트북 interact 모듈

 

 

설치부터 해보자. ipywidets패키지를 설치하고, widgetsnbextension을 활성화한다. 아나콘다 배포판을 사용하고 있다면, 이미 설치되어 있다.

 

pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension

 


주피터랩은 설치방법이 다르다. 아래와 같이 설치해야 주피터랩에서도 interact모듈을 사용할 수 있다. 주피터랩에 대해서는 다음에 다뤄보도록 하겠다.


먼저 nodejs와 npm을 설치해야 주피터 익스텐션을 설치할 수 있다. 아나콘다 배포판을 사용하고 있다면, 아래 명령어로 설치할 수 있다.

 

conda install -c conda-forge nodejs

 


이제 랩익스텐션을 설치할 수 있다.

 

jupyter labextension install @jupyter-widgets/jupyterlab-manager

 


설치를 했다면 절반은 끝난 것이다. 사용방법이 매우 쉽기 때문이다. interact 모듈의 앞에는 함수를, 뒤에는 입력변수와 값을 입력한다. 숫자를 출력하는 함수를 만들고 입력변수에 10을 넣어보았다.

 

from ipywidgets import interact
 
def print_x(x):
    print(x)
    
interact(print_x, x=10)

 


아래와 같이 값을 조절할 수 있는 슬라이더가 나온다. 슬라이더를 조정하면 조정된 값이 함수에 적용되고 출력결과를 바로 확인할 수 있다.

주피터 노트북 슬라이더

 

 

입력변수를 문자로 지정하면, 문자에 맞게 텍스트 박스가 나온다.

 

from ipywidgets import interact
 
def print_x(x):
    print(x)
    
interact(print_x, x="a")

 

주피터 노트북 텍스트 박스

 


리스트 자료형을 입력변수로 넣으면, 리스트 박스가 나온다.

 

from ipywidgets import interact
 
def print_x(x):
    print(x)
    
temp = [1,2,4, 4]
interact(print_x, x=temp)

 

주피터 노트북 리스트 박스

 

 

판다스 데이터프레임과 사용할 때는 데코레이터로 이용하자.

데이터프레임에 interact모듈을 적용하려고 하니, 함수의 입력변수로 데이터프레임을 넣어야 하는 문제가 발생했다. 이럴 때는 아래와 같이 interact함수를 데코레이터로 넣으면 된다.


아래 코드는 col_object에 칼럼명을 리스트로 넣고, seaborn의 countplot을 변수별로 그려보는 것이다. 이해가 어렵다면, 그냥 아래와 같이 @interact로 지정하고 아래에 확인하고 싶은 내용을 함수로 만들면 된다. seaborn에 대해서는 다음 포스팅에서 한 번 다뤄보도록 하겠다.

 

@interact
def view_object(x=col_object):
    sns.countplot(df[x])

 


데이터 분석을 할 때 값과 변수를 계속해서 바꾸면서 확인할 때 유용한 기능이다. 위의 내용으로도 유용하게 사용할 수 있지만, 더 많은 사용방법을 알고 싶다면 아래 ipywidgets페이지를 참조하자.
( 참조: ipywidgets 페이지 바로가기 )

 


오늘은 주피터 노트북 사용법, interact 모듈을 사용하는 방법을 알아보았다. 반복되는 작업을 함수로 만들고, 바꿔야 하는 값을 입력인자로 넣는다. 그리고, interact함수에 함수명과 입력변수를 지정하면 됐다. 손쉽게 그래픽 기반의 인터페이스를 만드는 일은 재미있다. 다음에 기회가 되면 한 번 써보도록 하자.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기