2.1. Jupyter¶
The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, data visualization, machine learning, and much more.
2.1.1. Install¶
$ pip install jupyter
2.1.2. Run¶
$ jupyter-notebook
[I 08:58:24.417 NotebookApp] Serving notebooks from local directory: /Users/catherine
[I 08:58:24.417 NotebookApp] 0 active kernels
[I 08:58:24.417 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
[I 08:58:24.417 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
$ jupyter-notebook filename.ipynb
2.1.3. Using¶
Add code
Run code
Modify code and run
Autocomplete
Cell type (Markdown, LaTeX, Code)
2.1.4. Shortcut keys¶
Indent:
Tab
Shift + Tab
Comment Code:
Ctrl + /
Run:
Shift
+Enter
2.1.5. Cells¶
Insert Below/Above Cells
Add, Delete Cells
Cut, Copy, Paste Cells
Move Up/Down Cells
Merge, Split Cells
2.1.6. Run¶
Run Cell
Shift-Enter
Run All (above/below)
Restart Kernel
Restart Kernel and Clear Output
Clear Output
2.1.7. Magic commands¶
%magic
%
- Line Magics%%
- Cell magic%run
- Run the named file inside IPython as a program.!pip freeze
Full list https://ipython.readthedocs.io/en/stable/interactive/magics.html#
2.1.8. Kernels¶
2.1.9. Functions¶
Checkpoints
Download
Trust Notebook
Close and Halt
2.1.10. Performance and profiling¶
%%timeit
%%timeit -n 1000 -r 7
2.1.11. Markdown¶
Unorganized lists:
* first element
* second element
* third element
- first element
- second element
- third element
Organized lists:
1. first element
1. second element
1. third element
Headers:
# Header level 1
## Header level 2
### Header level 3
#### Header level 4
##### Header level 5
###### Header level 6
Formatting:
*italic*
**bold**
Code inline:
`class`
Code blocks:
```python
name = 'José Jiménez'
print(f'My name... {name}')
```
2.1.12. Tables¶
| id | firstname | lastname | agency |
|----|:-----------|:---------:|----------:|
| 1 | José | Jiménez | NASA |
| 2 | Иван | Иванович | Roscosmos |
| 3 | Mark | Watney | NASA |
| 4 | Alex | Vogel | NASA |
2.1.13. LaTeX¶
%%latex
%%latex
$$c = \sqrt{a^2 + b^2}$$
%%latex
$$\int_{x=0}^{x=\infty} x^\pi dx$$
%%latex
\begin{equation}
H← 60 + \frac{30(B-R)}{Vmax-Vmin} , if Vmax = G
\end{equation}
from IPython.display import Latex
Latex(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx')
Latex(r'$\lim_{x \to 0} (1+x)^{1/x} = e$')
2.1.14. Matplotlib charts¶
x = np.linspace(-5, 5, 100) # vector z 100 równo odległymi wartościami od -5 do 5
y = np.sin(X) # sinus wszystkich wartości x
plt.plot(x, y) # wykres liniowy
%matplotlib inline
import math
import random
from matplotlib import pyplot as plt
x1 = [x*0.01 for x in range(0,628)]
y1 = [math.sin(x*0.01)+random.gauss(0, 0.1) for x in range(0,628)]
plt.plot(x1, y1)
x2 = [x*0.5 for x in range(0,round(63/5))]
y2 = [math.cos(x*0.5) for x in range(0,round(63/5))]
plt.plot(x2, y2, 'o-')
plt.show() # doctest: +SKIP
2.1.15. HTML¶
from IPython.display import HTML
HTML("We can <i>generate</i> <code>html</code> code <b>directly</b>!")
2.1.16. JavaScript¶
from IPython.display import Javascript
Javascript("alert('It is JavaScript!')")
2.1.17. Image¶
from IPython.display import Image
Image(url="https://python.astrotech.io/_static/favicon.png")
2.1.18. YouTube¶
from IPython.display import YouTubeVideo
YouTubeVideo("h8mDUc5L0XM")
2.1.19. Execute terminal commands¶
!
!pwd
!ls
dirs = !ls
for file in dirs:
if file.find("1_") >= 0:
print(file)
2.1.20. Output to different formats¶
File -> Download as
Notebook (.ipynb)
Python (.py)
HTML (.html)
Reveal.js Slides (.html)
Markdown (.md)
reST (.rst)
LaTeX (.lex)
PDF via LaTeX (.pdf)
2.1.21. Generate HTML¶
File -> Save and Checkpoint
File -> Download as -> HTML (.html)
2.1.22. Slides¶
View -> Cell Toolbar -> Slideshow
Select slides, sub-slides and speaker notes
File -> Save and Checkpoint
File -> Download as -> Reveal.js slides (.slides.html)
2.1.23. Github pages with Jupyter Slides¶
$ git submodule add https://github.com/hakimel/reveal.js.git reveal.js
$ jupyter nbconvert --to slides index.ipynb --reveal-prefix=reveal.js
$ jupyter nbconvert --to slides index.ipynb --reveal-prefix=reveal.js \
--SlidesExporter.reveal_theme=serif \
--SlidesExporter.reveal_scroll=True \
--SlidesExporter.reveal_transition=none
2.1.24. Assignments¶
"""
* Assignment: Jupyter First
* Complexity: easy
* Lines of code: 10 lines
* Time: 13 min
English:
TODO: English Translation
X. Run doctests - all must succeed
Polish:
1. Stwórz notebook jupyter o nazwie `jupyter_first.ipynb`
2. dodaj tekst opisujący następne polecenia
3. dodaj trzy różne 'code cell'
4. uruchom code cell z wynikiem wszystkich powyżej
5. dodaj code cell, który pokaże czas wykonywania instrukcji
6. dodaj Code Cell, który wyświetli wykres funkcji `sin()` inplace
7. Uruchom doctesty - wszystkie muszą się powieść
"""
"""
* Assignment: Jupyter Slides
* Complexity: easy
* Lines of code: 1 lines
* Time: 5 min
English:
TODO: English Translation
X. Run doctests - all must succeed
Polish:
1. Poprzedni skrypt przekonwertuj na slajdy i uruchom prezentację w przeglądarce
2. Uruchom doctesty - wszystkie muszą się powieść
"""