본문 바로가기
python

jupyter lab(notebook) 유용한 기능 매직명령어 10가지 및 단축키

by 맑은안개 2021. 3. 24.

Image by Photo Mix from Pixabay

Jupyter lab 매직명령어 & 단축키

주피터 랩(노트북)을 사용할 때 매직명령어 ( Magic commands )는 유용한 기능들을 제공한다. 유용한 명령어들은 어떤 것들이 있는지, 어떻게 사용하는지 알아본다.

 

주피터 랩 vs 주피터 노트북

주피터 노트북은 Python(IPython), R등의 데이터 과학에 사용되는 언어를 사용할 수 있는 웹 기반(web-based) 상호작용 환경을 제공한다. 

주피터 랩은 노트북 환경을 포함하여 더 나은 사용자 인터페이스를 제공하는 차세대 노트북 환경이다.  

 

개발환경 설치

pip install jupyterlab

# 주피터 랩 실행
jupyter-lab

 ! 크롬 웹브라우저에서 주피터 랩을 실행할 것을 추천한다. 

 

주피터 랩 단축키 모음

출처: https://coderefinery.github.io

매직명령어란 ( Magic commands )

Magic command는 IPython kernel에서 제공되는 명령어이다. 주피터 랩은 IPython kernel을 사용하므로  Magic command를 사용할 수 있는데 디렉토리를 생성, 이동하거나 파일을 생성할 수 있고 Python파일을 Load하는 기능들을 제공한다. Magic command는 %, %% 키워드를 사용하여 실행할 수 있다. 

 

  %는 Line magic으로 부르며 한 줄 안에서 명령어 실행이 시작되고 종료된다.   %%는 Cell magic으로 부르며 노트북의 Cell안에서 명령어 실행이 시작되고 종료된다. 

 

위 Line과 Cell의 차이점은 아래 기능들을 살펴보면서 알아보자. 

 

pwd

# 현재 작업 디렉토리 확인
%pwd

# OUTPUT
'c:\\python\\data_science\\Exam'

mkdir

# 디렉토리 생성
%mkdir inner

cd

#디렉토리 이동
%cd inner

# OUTPUT
c:\python\data_science\Exam\inner

%cd ../

# OUTPUT
c:\python\data_science\Exam

history

# Magic command 실행 이력 조회
%history

# OUTPUT
%pwd
%mkdir inner
%cd inner
%cd ../
%hisory
%history

%history -n

# OUTPUT
   1: %pwd
   2: %mkdir inner
   3: %cd inner
   4: %cd ../
   5: %hisory
   6: %history
   7: %history -n

write

- Cell Magic( %% )으로 write명령을 호출하여 dummy.py를 만든다.

%%writefile dummy.py
# Data
import numpy as np
import pandas as pd

# Visualization
import matplotlib.pyplot as plt

def say_hello(message='hello'):
    print(message)

if __name__ == '__main__':
    print('Invoked dummy.py')

load

- 현재 노트북의 라인넘버를 지정하여 해당 Cell의 코드를 가져오거나 외부 파일 코드를 가져올 수 있다.

- 위에서 작성한 dummy.py를 load한다.

- 실행 후 해당 명령어는 주석처리 된다. 

run

# 위에서 write로 작성한 dummy.py를 실행한다.
%run dummy.py

# OUTPUT
Invoked dummy.py

#run으로 실행된 dummy.py의 리소스가 현재 노트북에 등록된다.
say_hello('Hello world')

# OUTPUT
Hello world

time

- 코드의 실행시간을 출력한다.

import numpy as np
rand = np.random.randint(100, size=10000)
%time print(np.mean(rand))

49.803
Wall time: 1.03 ms

%%time
def web_scraping(url):
    import urllib3
    http = urllib3.PoolManager()
    r = http.request('GET', url)
    
    if r.status == 200:
        print(f'Succeed connection: {url}')
        return r
    
data = web_scraping('http://www.daum.net')    

Succeed connection: http://www.daum.net

Wall time: 82.8 ms

 

timeit

- time과 다르게 반복 횟수, 실행 횟수를 지정할 수 있다. 

- 매개변수 -n ( 반복 횟수 ), -r ( 실행 횟수 )

- 반복/실행 횟수는 미 지정시 실행 횟수는 기본 7번 실행한다. 반복횟수는 통계데이터가 충분할때까지 적당히 반복한다.

- 각 실행 횟수(r)에서 반복(n)되는 최상의 결과를 도출하여 평균, 표준편차를 출력한다.

%%timeit -n2 -r1
url_list = ['http://www.daum.net', 'http://www.naver.com', 'http://www.google.com']
for url in url_list:
    web_scraping(url)

Succeed connection: http://www.daum.net

Succeed connection: http://www.naver.com

Succeed connection: http://www.google.com

Succeed connection: http://www.daum.net

Succeed connection: http://www.naver.com

Succeed connection: http://www.google.com

453 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 2 loops each)

 

pip

- 콘솔을 열어 pip명령을 실행할 필요 없이 노트북내에서 실행가능하다.

%pip list

%pip install requests

 

 

반응형