Aula 01 - IPython (e o notebook)

Objetivos

  • Introdução ao IPython e Jupyter Notebook
  • Navegação básica
  • Comandos "mágicos"

O que é IPython (e IPython Jupyter Notebook)?

  • Um ambiente para interagir com código
  • O notebook é uma ferramenta para literate computing
    • Combina narrativa, código e resultados

IPython no terminal

O terminal básico do IPython digite:

ipython

ipython

Python 3.4.1 (default, May 23 2014, 17:48:28) [GCC]
Type "copyright", "credits" or "license" for more information.

IPython 3.0.0-dev -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

Rodar código

(Acompanhem pelo terminal)


In [ ]:
print("Olá alunos")

Pedir ajuda


In [ ]:
float?

Ajuda com ??


In [ ]:
import seawater as sw

sw.f??

In [ ]:
*int*?

Ajuda com tab


In [ ]:
enumerate()

IPython reference card:


In [ ]:
%quickref

Tab completion

É uma forma conveniente, especialmente para atributos, de explorar a estrutura dos objetos que você está lidando.


In [ ]:
import seawater as sw
sw.

Interactiviade: input, output, history


In [ ]:
2+10

In [ ]:
_ + 10

Output

Você pode suprimir a saída e o cache usando ; no final do comando:


In [ ]:
10+20;

In [ ]:
_

Histórico do output

A saída é guardada em _N e Out[N]:


In [ ]:
Out

In [ ]:
_25 == Out[25]

Os últimos 3 podem ser acessados rapidamente com:


In [ ]:
print(u'último: {}'.format(_))
print(u'penúltimo: {}'.format(__))
print(u'antepenúltimo: {}'.format(___))

Histórico do input


In [ ]:
In[11]

In [ ]:
print(u'último: {}'.format(_i))
print(u'penúltimo: {}'.format(_ii))
print(u'antepenúltimo: {}'.format(_iii))

In [ ]:
%history

Acesando o sistema operacional

Nota: os comandos abaixo funcionam em Linux e Macs, mas não em Windows.


In [ ]:
!pwd

In [ ]:
files = !ls
print(u"Conteúdo do diretório:")
print(files)

In [ ]:
!echo $files

In [ ]:
!echo {files[0].upper()}

Notebook

Interface

  • Dashboard
  • Notebook e células
  • Menu
  • Toolbar

Típos de células

  • Código
  • Markdown
  • Raw text
  • Heading

$\LaTeX$ equations

$$ \frac{D\mathbf{v}}{Dt} = -\frac{1}{\rho}\nabla p - 2\Omega \times \mathbf{v} + \mathbf{g} + \mathbf{R_r} $$

Atalhos de teclado

  • Ctrl-Enter para rodar
  • Shift-Enter para rodar e ir para a próxima
  • Os outros atalhos começam com: Ctrl-m ?
  • Examplo Ctrl-m h

Trabalhando com Notebooks

  • IPython Notebooks são arquivos .ipynb
  • Tudo dentro do arquivo são dados JSONs
  • O servidor dos Notebooks abre o que está no diretório
  • Para começar digite:

    ipython notebook


In [ ]:
from IPython.nbformat import current

with open('01-Jupyter-Basics.ipynb') as f:
    nb = current.read(f, 'json')

nb.worksheets[0].cells[0]

Funções mágicas

As magic functions são um conjunto de comandos chamados através do um ou dois sinas de %. Alguns ainda implementam opções extras através de argumento --, parêntesis ou vírgulas. As duas razões por trás das funções magic são:

  • Fornecer um namespace ortogonal para controlar o próprio IPython e expor funcionalidades do sistema.

  • Para fornecer um mode de comandos que requer menos digitação.


In [ ]:
%magic

In [ ]:
%lsmagic

magics de linha e de célula:


In [ ]:
%timeit range(10)

In [ ]:
%%timeit
range(10)
range(100)

magics de linha podem ser usadas em loops:


In [ ]:
for i in range(5):
    size = i*100
    print('size: {}'.format(size))
    %timeit range(size)

Magics podem ativar outra sintaxe que não necessariamente é python:


In [ ]:
%%bash
echo "My shell is:" $SHELL
echo "User:" $USER

Outra magic útil: criar um arquivo diretamente do notebook:


In [ ]:
%%file ctd.dat

S,T,P
35.5,12.5,0
34.8,10.6,100
33.45,9,1000

In [ ]:
!cat ctd.dat

In [ ]:
from pandas import read_csv

ctd = read_csv('ctd.dat', index_col='P')
ctd

In [ ]:
1/0

In [ ]:
%debug

In [ ]:
%whos

Plotando no notebook


In [ ]:
%matplotlib inline

import matplotlib.pyplot as plt

In [ ]:
plt.plot(ctd['S'], ctd['T'], 'ro')

Concluindo pode usar facilmente Markdown, HTML, equações LaTeX, imagens, e muito mais!

  • Notebooks podem ser visualizados e compartilhados facilmente pelo nbviewer