Jupyter notebooks tips and tricks | by Mostafa Gazar | Towards Data Science

Shift + Enter to run a cell (code or markdown).
A to insert a new cell above the current cell.
B to insert a new cell below the current cell.
M to change the current cell to Markdown
Y to change the current cell to code.
D + D (twice) to delete the selected cells.
Time the execution of a single line of code or the whole cell
# Run the code multiple times and find mean runtime%timeit CODE_LINE%%timeit CODE_CELL# Run once and report%time CODE_LINE%%time CODE_CELL
Use ! prefix to run a single bash command line
%%bash to change the current code cell to run to bash mode, basically writing bash commands in there
%%bashecho "hello from $BASH"
%%js, %% html, %%latex, %%python2, %%python3, ... run and render code cells in that specified language or format.
autoreload IPython extension is exceptionally helpful when you do not want to worry about reloading modules before executing new code. In other words when you change something in a certain module the current notebook uses, changes will take place when you run new code cells without having to worry about anything.
%load_ext autoreload%autoreload 2
Embedd tensorboard in jupyter notebook
%load_ext tensorboard%tensorboard --logdir logs/model_training_logs
Finally you can list all available magics by running %lsmagic, this will show both line and cell magics currently defined.
Sometimes you will have this memory hungry variable, you can reclaim memory by setting it to NONE and then forcing gc to run
some_var = Nonegc.collect()
Use sudo service jupyter restart to restart jupyter because every once in a while jupyter would throw a fit and restarting kernels will not be enough to get it back to a responsive state.
Add ? before almost any function, variable, ... and run the code cell to access its documentation.
tqdm which means "progress" in Arabic (taqadum, تقدّم) is not really related to jupyter notebooks but it can be used to show a smart progress meter. Just by wrapping any iterable with tqdm(iterable)
from tqdm import tqdmfor i in tqdm(range(10000)):    pass
When you want to count the number of files in a directory you can run the following command
!ls DIR_NAME | wc -l
There are many great extensions in jupyter_contrib_nbextensions. You should be using Jupyter lab though instead.
First you need to instead jupyter_contrib_nbextensions and then you can install various useful extensions.
pip install jupyter_contrib_nbextensionsjupyter contrib nbextension install --user
These are the ones I love:
code_prettify backed by autopep8 is great for reformatting code in notebook code cells base on PEP 8 style guide
pip install autopep8jupyter nbextension enable code_prettify/autopep8
spellchecker highlights incorrectly spelled words in Markdown cells which saved me from a few embarrassing typos.
jupyter nbextension enable spellchecker/main
toggle_all_line_numbers as its names suggests it adds a toolbar button to toggle between showing line numbers or not
jupyter nbextension enable toggle_all_line_numbers/main
varInspector is great for debugging python and R kernels. It displays the values of all defined variables in a floating window
jupyter nbextension enable varInspector/main
dunovank/jupyter-themes has one of the best themes I came across. I tried it and then I stopped using it because I switch environments all the time so it was best for me to get used to the stock theme.
pip install jupyterthemes# darkjt -t onedork -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T# lightjt -t grade3 -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T# Restore default themejt -r
There are two extensions that I only use at the moment
krassowski/jupyterlab-go-to-definition which allow me to use Alt + click to jump to a definition using your mouse, or Ctrl + Alt + B keyboard-only alternative.
jupyter labextension install @krassowski/jupyterlab_go_to_definition
krassowski/jupyterlab-lsp adds support for code navigation + hover suggestions + linters + autocompletion. Check out their full list of supported language servers
pip install --pre jupyter-lspjupyter labextension install @krassowski/jupyterlab-lspconda install -c conda-forge python-language-server
Finally you need to rebuild the jupyter lab app
jupyter lab build
There are many themes out there, the first customization plugin in my list is not a theme though. It is a topbar extension to quickly switch between light and dark themes
jupyter labextension install jupyterlab-topbar-extension jupyterlab-theme-toggle
Here is a list a few themes I used recently
jupyter labextension install @telamonian/theme-darculajupyter labextension install @rahlir/theme-gruvboxjupyter labextension install @kenshohara/theme-nord-extension
Share it and get it in touch, my Twitter DMs are open!