A beleza do Jupyter Notebook ❤

Luís Eduardo
LICA
Published in
6 min readJun 25, 2019

Uma nova forma de programar!

Introdução

Se você já teve algum contato com programação muito provavelmente utilizou desde algum editor de texto simples a algum ambiente de desenvolvimento repleto de extensões bem úteis, e tudo isso nos ajuda a sermos mais ágeis com relação a codificação, nós conseguimos poupar um baita tempo com indentação de código, importação de bibliotecas e até mesmo erros de sintaxe que são apontados pelos editores. Porém tudo isso é muito bem aplicado ao processo de desenvolvimento de aplicações, onde estamos habituados a codificar e em seguida testar o nosso código dando build no projeto. Mas tudo isso muda quando estamos no ambiente de Data Science e é ai que o Jupyter Notebook entra em ação!

Em Data Science vamos executar trechos de códigos inúmeras vezes, já que estamos trabalhando com leitura e processamento de dados. Então executar scripts inteiros quando o nosso objetivo está em apenas um trecho do arquivo fica inviável, sem falar no tempo que será gasto. Desta maneira o Jupyter traz uma solução para nós que estamos adentrando no mundo dos dados: a computação interativa!

Isso mesmo, o Jupyter nos permite não somente desenvolver nosso código, como costumamos fazer com scripts, como também ele permite uma melhor organização e visualização tanto dos algoritmos codificados como também dos dados que estão sendo processados por meio da plotagem de gráficos. Mais a frente falarei sobre como funciona essa computação interativa.

Como surgiu?

Tudo começou em um outro projeto chamado IPython, ao qual a ideia é a mesma: permitir uma codificação mais confortável para quem trabalha com dados e precisa tanto de uma forma de visualiza-los como também de uma maneira de organizar o processamento desses. Porém, como o próprio nome já sugere, o IPython foi desenvolvido como um shell interativo para a linguagem de programação Python e com o passar do tempo alguns componentes foram se tornando mais gerais passando também a serem acessíveis a outras linguagens. Então com base nisso o projeto IPython foi movido para um projeto maior: o Jupyter.

Vale lembrar também que o projeto Jupyter em seu crescimento foi expandido para diversas outras linguagens, como: Julia, R, JavaScript, Scala e outras 40 mais.

Trabalhar com notebooks é realmente vantajoso?

Como já dito anteriormente, o grande diferencial que o Jupyter traz é a capacidade da computação de maneira interativa, de forma que ainda seja possível tanto uma melhor visualização dos seus dados bem como também a facilidade para compartilhar seus códigos (em formato de notebooks).

Diferente da programação “tradicional” que estamos habituados a criar scripts de códigos (pequenos arquivos de código com instruções significantes), com o Jupyter nós vamos trabalhar com notebooks, ou seja, arquivos que nos permitem organizar o nosso código dividido por partes que são colocadas em células permitindo assim sua execução individual. E como os valores são persistidos na memória após a sua execução eles se tornam acessíveis a outras células também, mesmo que de forma atemporal.

Plot a dataframe with Pandas in Jupyter Notebook

Mas você deve estar se perguntando: “okay, mas o que isso traz de melhoria que um simples script já não me proporciona?”. Bom, trabalhar com dados requer constantes plotagens de gráficos, manipulação nos datasets, execução de algoritmos para o processamento de dados e etc, dessa maneira executar da forma que estamos acostumados vai nos custar muito tempo, sem falar que vamos ter que executar todos os scripts quando o nosso objetivo era apenas executar uma pequena instrução contida nele. Com o nosso código dividido em células nós vamos precisar apenas executar e reexecutar aquilo que for do nosso interesse, tornando o processo bem mais fácil, rápido e confortável.

Vale acrescentar também que o Jupyter Notebook tem suporte em plataformas como o GitHub, ao qual você pode desenvolver seu notebook com todo seu trabalho e salvar no seu repositório, sendo possível a visualização dele como uma página HTML renderizada direto do seu repositório.

Dê uma olhada nesse notebook renderizado direto do GitHub:

Implementation of KNN

Configuração

O Jupyter pode ser instalado a partir do pip com o comando: pip install jupyter . O pacote também está disponível no gerenciador de pacotes Anaconda.

Após instalado basta executar o comando jupyter notebookem seu terminal e será disponibilizado um servidor que dará suporte a execução dos notebooks criados, ficando acessível por meio do seu browser!

Caso surja alguma dúvida nesse processo, a galera responsável pelo desenvolvimento do projeto preparou um tutorial rápido para a instalação: https://jupyter.org/install .

Instalei, configurei e agora?

Após instalado e o servidor executando, será liberado uma porta para que você consiga acessar pelo os seus notebooks.

Note que os notebooks possuem a extensão .ipynb e são esses arquivos que vão representar os notebooks que vamos criar!

Jupyter vai além: The Magic Commands

O Jupyter proporciona algumas coisas que facilitam ainda mais o nosso desenvolvimento, os chamados comandos mágicos. Esses comandos nos permitem ter acesso a configurações do notebook bem como outras funcionalidades que não se limitam a linguagem que você está atualizando no momento!

Alguns comando mágicos são:

  • %env: com este comando nós conseguimos configurar novas variáveis de ambiente;
  • %run: este comando nos permite executar códigos que estão disponíveis em outro notebook;
  • %store: com isto nós conseguimos armazenar valores de um notebook para que assim seja possível compartilhar com outros notebooks;
  • %javascript: este belo comando mágico permite que você execute código JavaScript no seu notebook, te dando mais liberdade para personalizar a sua maneira;
  • %time: com este comando nós conseguimos obter informações como o tempo de execução do nosso notebook.

Para encontrar mais comandos mágicos basta executar o seguinte comando em uma célula: %lsmagic.

Fiz um exemplo da mesclagem de código JavaScript e Python e desenvolvi uma pequena aplicação com Jupyter que altera a cor de uma imagem na web passando como entrada apenas a URL da mesma. Saca só:

Vou disponibilizar esse notebook no GitHub para caso você seja uma pessoa curiosa (isso é ótimo) e queira ver um pouco de código \o/, então clique aqui para acessar!

Vamos um pouco além!

Bom, pra mostrar um pouco do crescimento do projeto Jupyter bem como também da maneira de codificar que ele nos fornece, falarei brevemente sobre um projeto incrível da Google que vem facilitando e otimizando o trabalho de muita gente envolvida com o processamento de dados em grande escala: o Google Colaboratory.

Essa incrível plataforma faz uso de notebooks que processam nossos dados na cloud da Google. A Google em mais um de seus projetos abertos, nos fornecem poder computacional para processar nossos modelos e algoritmos que levariam décadas para serem computados e todo processamento fica por conta da plataforma, sem falar no acesso ao Google Drive, facilitando o armazenamento de dados e o sincronismo destes.

Assim todo trabalho é facilitado e otimizado, deixando a codificação mais limpa, organizada e mais motivante!

Para terminar…

Espero ter conseguido passar um pouco sobre o importante papel que o Jupyter vem trazer para vida dos aficionados por dados e mais dados. Deixarei um post que passa alguns atalhos e truques para que o seu trabalho fique ainda mais fácil e divertido:

Até a próxima, pessoal!

--

--

Luís Eduardo
LICA
Editor for

Researcher in Artificial Intelligence at Universidade Federal de Alagoas