In [2]:
from IPython.display import YouTubeVideo
YouTubeVideo('L9LD5eZicAg')
Out[2]:
Un notebook es un formato de documento avanzado
Soporta texto, código ejecutable y representaciones de resultados (tablas, figuras, enlaces externos...).
Es un metadocumento que puede traducirse a muchos otros formatos. Por ejemplo, estas slides son un notebook.
Permite distribuir algoritmo, documentación, código y datos a la vez para permitir resultados reproducibles
Mathematica
Maple
Matlab live editor (Posterior a Jupyter)
El experimento LIGO publicó un notebok para jugar con la detección de ondas gravitacionales
Es un documento con todas las capacidades de un procesador de texto, con
listas de puntos:
Uno
Dos
listas numeradas...
Primer nivel
a. Segundo nivel
Utiliza un lenguaje intermedio de texto llamado Markdown, un formato de metadocumentación cada vez más común.
Porque viene con un intérprete casi completo de $LaTeX$, un formato muy frecuente para textos científicos. Cualquier ecuación entre signos de $
queda embebida como $\vec F = \frac{\mbox{d}}{\mbox{d}t} m \vec v$, mientras las ecuaciones centradas se introducen con dobles signos de $$
Pero lo más importante es la posibilidad de adjuntar código.
Jupyter está dividido en dos componentes:
El frontend que sirve la aplicación web y se comunica con el navegador (preferentemente Chrome o Chromium).
El kernel (backend) que evalúa los comandos en el lenguaje de programación que le pidamos.
Jupyter viene de Julia + Python + R, como los tres primeros lenguajes que tuvieron un kernel, pero hoy hay muchos mas.
Éstos son los kernels soportados el 16 de agosto de 2016
Name | Jupyter/IPython Version | Language(s) Version | 3rd party dependencies | Example Notebooks | Notes | |
---|---|---|---|---|---|---|
sas_kernel | Jupyter 4.0 | python >= 3.3 | SAS 9.4 or higher | |||
IPyKernel | Jupyter 4.0 | python 2.7, >= 3.3 | pyzmq | |||
IJulia | julia >= 0.3 | |||||
IHaskell | ghc >= 7.6 | |||||
IRuby | ruby >= 2.1 | |||||
IJavascript | nodejs >= 0.10 | |||||
jpCoffeescript | coffeescript >= 1.7 | |||||
ICSharp | Jupyter 4.0 | C# 4.0+ | scriptcs | |||
IRKernel | IPython 3.0 | R 3.2 | rzmq | |||
SageMath | Jupyter 4 | Any | many | |||
pari_jupyter | Jupyter 4 | 2.8 | Cython | |||
IFSharp | IPython 2.0 | F# | Features | |||
gopherlab | Jupyter 4.1, JupyterLab | Go >= 1.6 | ZeroMQ (4.x) | examples | ||
Gophernotes | Jupyter 4 | Go >= 1.4 | zeromq 2.2.x | examples | docker image | |
IGo | Go >= 1.4 | |||||
IScala | Scala | |||||
Jupyter-scala | IPython>=3.0 | Scala>=2.10 | example | |||
IErlang | IPython 2.3 | Erlang | rebar | |||
ITorch | IPython >= 2.2 | Torch 7 (LuaJIT) | ||||
IElixir | Jupyter | Elixir | ||||
IAldor | IPython >= 1 | Aldor | ||||
IOCaml | IPython >= 1.1 | OCaml >= 4.01 | opam | |||
IForth | IPython >= 3 | Forth | ||||
IPerl | Perl 5 | |||||
IPerl6 | Perl 6 | |||||
IPHP | IPython >= 2 | PHP >= 5.4 | composer | |||
Jupyter-PHP | Jupyter 4.0 | PHP >= 5.5.9 | composer | |||
IOctave | Jupyter | Octave | Example | MetaKernel | ||
IScilab | Jupyter | Scilab | Example | MetaKernel | ||
IMatlab | Jupyter | Matlab | pymatbridge | Example | MetaKernel | |
Bash | IPython >= 3 | bash | Wrapper | |||
PowerShell | IPython >= 3 | Windows | Wrapper, Based on Bash Kernel | |||
CloJupyter | Jupyter | Clojure >= 1.7 | ||||
Hy Kernel | Jupyter | Hy | Tutorial | |||
Redis Kernel | IPython >= 3 | redis | Wrapper | |||
jove | io.js | |||||
jp-babel | Jupyter | Babel | ||||
ICalico | IPython >= 2 | multiple | Index | |||
IMathics | Mathics | |||||
Lua Kernel | Lua | |||||
IPyLua | Lua | Fork of Lua Kernel | ||||
Calysto Scheme | Scheme | MetaKernel | ||||
Calysto Processing | Processing.js >= 2 | MetaKernel | ||||
idl_kernel | IDL | IDL seem to have a built-in kernel starting with version 8.5 | ||||
Mochi Kernel | Mochi | |||||
Lua (used in Splash) | Lua | |||||
Apache Toree (formerly Spark Kernel) | Jupyter | Scala, Python, R | Spark >= 1.5 | Example | ||
Skulpt Python Kernel | Skulpt Python | Examples | MetaKernel | |||
MetaKernel Bash | bash | MetaKernel | ||||
MetaKernel Python | python | MetaKernel | ||||
IVisual | VPython | Ball-in-Box | ||||
IBrainfuck | Brainfuck | Demo | Wrapper | |||
KDB+/Q Kernel (IKdbQ) | IPython >= 3.1 | Q | qzmq, qcrypt | |||
ICryptol | Cryptol | CVC4 | ||||
cling | Jupyter 4 | C++ | Example | |||
Xonsh | Xonsh | Example | MetaKernel | |||
Prolog | Prolog | MetaKernel | ||||
cl-jupyter | Jupyter | Common Lisp | Quicklisp | About | ||
Maxima-Jupyter | Jupyter | Maxima | Quicklisp | |||
Calysto LC3 | Assembly Language for the Little Computer 3 | |||||
Java 9 Kernel | Java >= 9 | [Broken :-(] | ||||
Yacas | YACAS | |||||
IJython | Jython 2.5 | |||||
ROOT | Jupyter | C++/python | ROOT >= 6.05 | |||
Gnuplot Kernel | Gnuplot | Example | MetaKernel | |||
Tcl | Jupyter | Tcl 8.5 | Based on Bash Kernel | |||
J | Jupyter | J 804 | Examples | |||
Jython | Jupyter>=4.0 | Jython>=2.7.0 | Java>=7 | Java based JSR223 compliant | ||
Clojure | Jupyter>=4.0 | Clojure 1.8 | clojure-jrs223, Java>=7 | Java based JSR223 compliant | ||
C | Jupyter | C | gcc |
|||
TaQL | Jupyter | TaQL | python-casacore | TaQL tutorial | ||
Coconut | Jupyter | Coconut | ||||
SPARQL | Jupyter 4 | Python 2.7 or >=3.4 | rdflib, SPARQLWrapper | Examples | Optional GraphViz dependency | |
AIML chatbot | Jupyter 4 | Python 2.7 | pyAIML | Examples |
In [1]:
from matplotlib import pylab as plt
import numpy as np
plt.style.use('bmh')
%matplotlib notebook
fig = plt.figure(1)
ax = fig.add_subplot(1,1,1)
ax.plot(np.cumsum(np.random.randn(1000)))
plt.title('Example of Brownian motion')
Out[1]:
In [2]:
import pandas as pd
iris = pd.read_csv('data/iris.csv')
iris.head()
Out[2]:
In [3]:
fig = plt.figure(2)
ax = fig.add_subplot(1,1,1)
for s, c in zip(iris.groupby('Name'), ['r', 'y', 'b']):
s[1].plot.scatter(x='SepalWidth', y='SepalLength', c=c, s=50*s[1]['PetalLength'], ax=ax, label=s[0])
plt.xlabel('Sepal width')
plt.ylabel('Sepal length')
Out[3]: