• Português
  • English
  • Español
  • Geração de relatórios automatizados com Pweave

    Por: em 2 de fevereiro de 2018

    No Datalab, testamos continuamente diversas tecnologias para visualização de dados. Queremos gerar visualizações em diversos formatos, como dashboards, relatórios, mapas com dados geolocalizados, entre outros.

    Diante deste cenário, é bastante comum utilizarmos Jupyter Notebook para gerar relatórios com análises exploratórias, insights e até mesmo como material para apresentações técnicas.

    Neste post, irei falar sobre o pacote Pweave[1] do Python. Este pacote permite transformar markdown, com código Python embutido, em HTML. Constitui uma alternativa relativamente simples ao Jupyter para gerar relatórios automatizados, sem a necessidade de exibir o código fonte escrito. Além disso, mostrarei exemplo de como criar visualizações usando o pacote Bokeh[5], integrado ao Pweave.

     

    Relatórios: Por que não usar o Jupyter Notebook?

    Embora existam algumas maneiras para desabilitar a exibição do código fonte nas células do Jupyter[2], em linhas gerais, os notebooks gerados tendem a ficar bastante poluídos por vários trechos de código, prejudicando a legibilidade de um relatório, principalmente se for direcionado a pessoas não técnicas e/ou que não estejam envolvidas diretamente na análise realizada.

    Outro motivo que pode ser alegado, é a legibilidade do próprio arquivo .ipynb. Identificar as partes do código fonte neste arquivo, pode ser uma tarefa árdua. O Github tem nativamente uma extensão que facilita a leitura, através da renderização do .ipynb. Porém outros repositórios, como o BitBucket, além de diversas IDEs, ainda não possuem tal funcionalidade.

     

    Pweave: Usando Python Markdown para gerar relatórios

    Para atacar este problema, temos utilizado o pacote Pweave, que por sua vez, utiliza o pacote Pandoc para a conversão entre formatos. Por isso, é possível escrever Python markdown e gerar HTML. Com isso temos o código fonte em .pmd, muito mais claro que o .ipynb. E claro, podemos omitir a impressão do código fonte em um relatório, tornando-o mais legível.

    Para instalar o Pweave, basta usar o pip ou Anaconda e especificar a versão mais recente. No momento que escrevo esse artigo, a versão mais nova é a 0.30.

    Para exemplificar o uso do Pweave, o exemplo abaixo mostra como carregar o dataset iris[3]:

     

    Snippet 1: blogpost.pmd

     

    O snippet de código acima, é um arquivo de extensão .pmd, contendo o markdown que servirá como descrição do relatório, além do código Python, que utiliza os pacotes Pandas e Scikit-learn para carregar o dataset iris.

    Depois, é só executar o comando abaixo.

    Snippet 2: Geração de HTML a partir do Python markdown

     

    O Pweave irá ler o arquivo markdown acima e, ao encontrar a diretiva python, irá executar o código Python. Ao colocar a diretiva echo=False, garantimos que o código fonte não será exibido na saída. O seguinte HTML é gerado pela ferramenta:

     

    Figura 1: Transformando Python markdown em HTML

     

    O formato de saída md2html, markdown para HTML, é apenas um dos vários formatos disponíveis no Pweave[4].

     

    Criando gráficos com Bokeh

    O Pweave consegue capturar gráficos gerados pelo Matplotlib e pelo Bokeh. Escolhemos o Bokeh pela possibilidade de criação de visualizações interativas, que são facilmente renderizadas em browsers e inspiradas no D3.js.

    O código abaixo é um Python markdown que realiza a leitura do dataset iris e utiliza o Bokeh para gerar um gráfico[6]:

     

     

    Snippet 3: Visualização do iris dataset com Bokeh

     

     

    A função output_pweave() captura o gráfico gerado pelo Bokeh e informa que o resultado será embarcado na transformação que será executada pelo Pweave. Já a função show() renderiza o gráfico. Ambas as funções pertencem ao módulo pweave.bokeh.  O HTML resultante do código acima, executado com o comando do snippet 2, é mostrado na figura 2:

     

    Figura 2: Python Markdown em HTML e scatterplot gerado pelo Bokeh

     

    Conclusões

    O Pweave é um pacote em evolução. Ainda enxergamos o pacote knitr do R mais completo. Porém, é uma boa possibilidade a ser considerada para geração automática de relatórios e rápidos insights. Um fator importante é que a partir da versão 0.25, o Pweave só funciona com Python 3. O suporte ao Python 2 foi depreciado.

    Notadamente o HTML gerado sem código fonte impresso facilita a compreensão de relatórios oriundos de análises de dados, principalmente para usuários não técnicos ou que não estão diretamente envolvidos nestas análises.

    Por fim, é possível gerar saídas no formato PDF, com as devidas dependências instaladas, como descrito na documentação[4].

     

    Referências

    [1] Pweave – Scientific Reports using Python. http://mpastell.com/pweave/

    [2] http://chris-said.io/2016/02/13/how-to-make-polished-jupyter-presentations-with-optional-code-visibility/

    [3] Iris dataset. UCI Machine Learning Repository. https://archive.ics.uci.edu/ml/datasets/iris

    [4] Pweave output formats. http://mpastell.com/pweave/formats.html

    [5] Bokeh – a Python interactive visualization library. https://bokeh.pydata.org/en/latest/

    [6] Bokeh iris.py – https://bokeh.pydata.org/en/latest/docs/gallery/iris.html

    2 de fevereiro de 2018

    Filtre por mês

    Filtre por autor