이 포스트는 아래 포스팅을 참고한 포스팅입니다.

https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/


Jupyter Notebook


기존에는 IPython Notebook으로 알려졌던 Jupyter Notebook은 코드, 이미지, 분석 결과, 코멘트, 수식 등을 분석자가 "노트북"처럼 Keep할 수 있게하여 다른 사람들이 분석의 흐름을 읽기 쉽게 만들 수 있는 유연하고 강력한 툴입니다. Jupyter Notebook은 여러가지 언어를 지원합니다. (Python, R, Julia 등) 또한 어떤 컴퓨터에서든지 쉽게 호스팅할 수 있습니다. http나 ssh로 접속하기만 하면 됩니다. 또 무엇보다도 Jupyter Notebook은 무료입니다. IPython 프로젝트에서부터 시작된 Juypter Notebook는 Julia, Python, R의 앞 글자를 따시 지어졌고, 파이썬 이외의 여러가지 언어를 지원하기 위하여 시작되었습니다. 주피터에서 파이썬 코드를 실행할 때 내적으로는 IPython Kernel이 돌아가게 됩니다.


1. 키보드 단축키


Help > Keyboard Shortcuts에 가면 키보드 단축키들을 확인할 수 있습니다. 아시다시피 키보드 단축키는 개발에서 시간을 많이 단축해줍니다. 위 메뉴를 주피터가 업데이트될 때마다 확인하시면 좋은데, 키보드 단축키들이 자주 추가되기 때문입니다.


또는 Cmd + Shift + P (또는 Ctrl + Shift + P 리눅스, 윈도우의 경우) 을 누르면 대화창이 뜨는데 키보드 단축키들을 이름으로 검색해서 실행시킬 수 있습니다. 키보드 단축키가 생각나지 않으실 때는 이 기능을 활용하시면 좋습니다.


몇 가지 유용한 단축키롤 소개합니다. 


esc : command 모드로 변경한다.


command 모드 안에서

  • A : 현재 셀의 위에 새로운 셀을 추가한다.
  • B : 현재 셀 밑에 새로운 셀을 추가한다.
  • M : 현재 셀을 markdown 모드로 변경한다. 
  • Y : markdown 모드를 다시 code 모드로 변경한다.
  • D+D : 현재 셀을 삭제한다.
  • Enter : command 모드에서 edit 모드로 변경한다.
  • F : 코드를 find and replace 한다.
  • O : Output을 toggle한다.
shift + tab : 객체의 docstring(documentation)을 출력한다. 

복수의 셀을 선택하기
  • Shift J 나 Shift down(키보드 방향키)을 누르면 아래방향으로 복수의 셀을 선택할 수 있다. Shift K나 Shift Up을 누르면 위 방향으로 복수의 셀을 선택한다. 
  • 복수의 셀이 선택되면 마찬가지로 delete, copy, cut, paste, run을 할 수 있다. 
  • Shift M을 누르면 선택된 셀들을 merge 한다.

2. 변수를 이쁘게 출력하기


가장 널리쓰이는 방법은 print 문을 안 쓰고 그냥 변수명만 셀에 쓴 다음에 run을 하는 것입니다. 그러면 IPython Kernel이 해당 객체를 이쁘게 나타내주는데 예를 들어 pandas DataFrame을 출력할 때 유용한 방법입니다. 


덜 알려진 방법은 kernel 의 세팅을 바꾸면 여러개의 변수명에 대해서 output을 내줄 수 있다는 것인데

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
import pandas as pd


위와 같이 세팅하면


data = pd.DataFrame({'a':("A", "B","C","D","E","F","G"), 'b':(1,2,3,4,5,6,7)}) data.head() data.tail()

Out[11]:
ab
0A1
1B2
2C3
3D4
4E5
Out[11]:
ab
2C3
3D4
4E5
5F6
6G7


위와 같이 여러개의 statement가 있어도 그 statement의 수만큼의 output을 내줍니다. (세팅을 안 하게 되면 가장 마지막 output 만 나타내줍니다.)


~/.ipython/profile_default/ipython_config.py

 

일일이 세팅을 해주기 귀찮으면 위의 코드를


c = get_config()

# Run all nodes interactively
c.InteractiveShell.ast_node_interactivity = "all"

이렇게 바꾸어주면 일일이 코드상에서 세팅해주지 않아도 됩니다.



3. 라이브러리 도큐먼트를 쉽게 찾기


Help 메뉴에 가시면 Scipy, Numpy, Matplotlib, Pandas와 같은 흔히 쓰이는 라이브러이의 도큐먼트를 확인할 수 있습니다. 또한 코드상에서 ? 접두사를 붙여서 라이브러리의 도큐먼트를 확인할 수도 있습니다.


?str.replace()


Docstring:
S.replace(old, new[, count]) -> str

Return a copy of S with all occurrences of substring
old replaced by new.  If the optional argument count is
given, only the first count occurrences are replaced.
Type:      method_descriptor