
Embora possa parecer uma postagem de blog normal do WordPress (como todas as postagens anteriores em nosso blog), na verdade você está olhando para um Jupyter Notebook.
Minha saudação a todos neste primeiro post do ano. Que seja um ano de paz e prosperidade para todos nós. Depois de um agradável recesso de férias, na praia e no campo, estive muito ocupado no início do mês, preparando, com os parceiros, a transição de nossas atividades, de fornecedores de infraestrutura web, para o campo da ciência (predição de tendências usando dados agregados) e análise de dados (interpretação do passado com base em dados acumulados).
Muitas oportunidades nessa área e muitos desafios. Mas vejo que podemos contribuir positivamente para os nossos usuários e a sociedade. Estamos atentos às questões éticas e queremos inovar, tornando disponível ao público grande parte de nossos dados e análises, sem prejuízo de nossas atividades lucrativas. Mais à frente no tempo falaremos mais sobre isso, porque esse nosso diálogo vai continuar em caráter permanente.
Dados e mais dados por toda parte
Quando se fala em ciência e análise de dados no ano da Graça de 2022, não se pode fugir do inevitável assunto: os Notebooks, que estão a provocar uma revolução na área. Se você não estiver familiarizado com os Jupyter notebooks, tentarei mostrar de forma breve o que você precisa saber sobre eles, em linguagem acessível.
O Jupyter Notebook é um aplicativo de código aberto baseado na Web, que permite criar e compartilhar documentos contendo código ao vivo, equações, visualizações e texto narrativo. Os casos de uso incluem: limpeza e transformação de dados, simulação numérica, modelagem estatística, visualização de dados, aprendizado de máquina e muito mais.
Achamos que seria bem a propósito compartilhar aqui como conseguimos transformar um Jupyter Notebook em uma postagem de blog do WordPress. Nesta primeira “prova de conceito”, vou mostrar como os Notebooks funcionam e algumas coisas interessantes que você pode fazer com eles.
Por que estamos fazendo isso?
A razão pela qual estamos testando “postar em um blog usando um Jupyter Notebook” é para demonstrar que ele permite compartilhar na rede uma análise de dados feita em Python – e o correspondente código – com mais facilidade e de maneira mais reproduzível. Como o nome indica, o software foi projetado, no início, como um front-end para as linguagens Julia, Python e R. Atualmente ele suporta um grande número de linguagens.
Aqui nos Laboratórios Vox Leone (chegaremos lá um dia!), em função das mudanças que citei, usamos agora muito Python em todas as etapas de nosso fluxo de trabalho. Jupyter Notebook é a ferramenta que escolhemos para executar e compartilhar nosso código, internamente e com nossos clientes. Pensamos então ‘por que não aproveitar o mesmo pipeline em nossos esforços de comunicação no blog?’
Nosso plano, portanto, é criar uma série de posts do tipo tutorial, onde mostramos como você pode usar Python (e Notebooks) em seu trabalho diário como analista de dados – ou como acadêmico(a). Vamos extrair dados do Google Analytics e da Internet em geral – usando nossos próprios robôs, testar ferramentas e bancos de dados e executar todos os tipos de análises e visualizações usando esses dados (e Notebooks). Um notebook também é uma excelente ferramenta para apresentações – hora de abandonar o antiquado PowerPoint.
Transformando um Notebook em HTML
O primeiro passo no processo de compartilhar seu Notebook no WordPress é convertê-lo do formato nativo ipynb
para o formato html
.
Fazendo o WordPress renderizar um Notebook
Usando a maneira mais óbvia, simplesmente colamos o código HTML do Notebook dentro de um bloco ‘HTML personalizado’ na postagem do blog. No WordPress nosso post infelizmente é estático, mas existem serviços de nuvem (como o Zenodo e o Kaggle) especializados na hospedagem de notebooks, que permitem o compartilhamento interativo entre colaboradores.
Nota: A versão auto-hospedada (isto é, instalada em uma máquina local) do Jupyter Notebook, como a que usamos, vem com uma prática opção “Baixar como HTML” – o Google Colab, popular serviço de nuvem, infelizmente não possui esse recurso. Para contornar esses problemas, estamos à procura de uma solução alternativa que nos permita ao menos semi-automatizar todo o processo de publicação em blogs – por exemplo, construindo um plugin WordPress que pega o ID de um Colab Notebook, etc, e o transforma automaticamente em HTML.
Nas postagens futuras do blog, todo post que contiver um Notebook, como este, receberá uma tag “notebook”. Vamos também dizer ao WordPress para carregar alguma CSS extra para renderizar o Notebook como ele aparece em seu ambiente nativo. No momento estamos fazendo isso alterando algumas linhas de código em nosso arquivo functions.php
.
Queremos contribuir para dar mais popularidade a esse tipo de ferramenta, mostrando algumas coisas interessantes e úteis que estamos fazendo usando Python e Jupyter Notebooks.
O que é possível fazer com os Notebooks?
Com o conhecimento básico do que é um Notebook e como transformá-los em posts do WordPress, vamos ver o que podemos realmente conseguir com eles.
A coisa mais interessante, é claro, é que você pode executar o código Python e ver imediatamente a saída.
Aqui está um exemplo bem básico:
x = 5
for i in range(x):
print (i * '*')
* ** *** ****
Incrível, não é mesmo? O pequeno bloco de programa imprime recursivamente o número ‘x’ no intervalo entre 1 e ‘x’ (exclusive) em forma de asteriscos.
Os únicos limites que você tem são sua criatividade e habilidade em Python.
Esse primeiro bloco de script foi bastante inútil. Vamos tentar um código mais robusto para plotar um gráfico. O script a seguir gera um gráfico de linhas [genérico, apenas pra exibição], que é exibido logo abaixo.
def make_fig(figsize):
from matplotlib import rcParams, cycler
import matplotlib.pyplot as plt
import numpy as np
plt.ion()
# Fixando o estado aleatório para reproducibilidade
np.random.seed(19680801)
N = 10
data = [np.logspace(0, 1, 100) + .2 * np.random.randn(100) + ii for ii in range(N)]
data = np.array(data).T
cmap = plt.cm.coolwarm
rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N)))
from matplotlib.lines import Line2D
custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),
Line2D([0], [0], color=cmap(.5), lw=4),
Line2D([0], [0], color=cmap(1.), lw=4)]
fig, ax = plt.subplots(figsize=figsize)
lines = ax.plot(data)
ax.legend(custom_lines, ['Frio', 'Morno', 'Quente'])
make_fig(figsize=(10, 5))

Note que, a esta altura do post, já misturamos texto, código ativo e figuras em um mesmo corpo gráfico, usando uma única plataforma de software. Imagine o efeito final de um conteúdo como este em um relatório de vendas ou em um trabalho acadêmico.
É bem simples, concorda?
Há muito mais o que você pode fazer com Python e Jupyter Notebooks e vamos cobrir algumas coisas mais avançadas em nossos próximos posts.
Eu gostaria de terminar aqui com três pensamentos que tive enquanto eu escrevia este material:
- Escrever um post no blog usando Markdown é divertido (e eficaz). Eu sei que muitas pessoas já estão fazendo isso, mas esta é a primeira vez para mim, que venho da austera linha de comando. Markdown é a maneira padrão de escrever texto em Notebooks.
- Eu já pensava assim antes, mas agora tenho certeza absoluta de que Notebooks + WordPress é uma solução incrível para compartilhar exemplos de código e visualizações de dados online.
- Eu adoraria ouvir suas opiniões, ideias, perguntas e sugestões de tópicos nos comentários. Fico feliz em responder/ajudar.
Pingback: A Visão do Computador, Nós e os Presidenciáveis – Vox Leone