Subir para Python
-
23-09-2019 - |
Pergunta
Eu comecei recentemente a usar Arrancrar* Para criar relatórios de análises com r e agora estou procurando fazer o mesmo com meus scripts Python.
Eu encontrei referências a Incorporar python em Swave Docs, mas isso parece um pouco de um hack. Alguém já elaborou uma solução melhor ou há um equivalente para o Python que eu não estou ciente?
* Sweave é uma ferramenta que permite incorporar o código R para análises de dados completas em documentos de látex
Solução
Não acredito que haja um equivalente direto, então a sugestão de Romain François (em seu link) é provavelmente a melhor. Você também pode querer considerar o seguinte:
- Dê uma olhada em Pylit e Pyreport destinados à programação alfabetizada com Python.
- Esfinge é ótimo para documentar com o Python e pode gerar látex.
- Aqui está Uma lista de ferramentas para programação alfabetizada. Alguns deles trabalham com qualquer linguagem de programação.
Outras dicas
Escrevi uma implementação do Sweave Python chamada PWeave que implementa a funcionalidade básica e algumas opções de Sweave para o código Python incorporado no documento REST ou LATEX. Você pode obtê-lo aqui: http://mpastell.com/pweave E veja a postagem original do blog aqui: http://mpastell.com/2010/03/03/pwweave-sweave-for-python/
Dexy é um produto muito semelhante para SWAVER. Uma vantagem de Dexy é que ele não é exclusivo de um único idioma. Você pode criar um documento Dexy que incluía código R, código Python ou qualquer outra coisa.
Isso é um pouco tarde, mas para referência futura, você pode considerar meu Pythontex pacote para látex. O Pythontex permite que você insira o código Python em um documento LATEX, execute -o e traga de volta a saída. Mas, diferentemente do Sweave, o documento que você edita é um documento .tex válido (não .snw ou .rnw), portanto, editar a parte não-código do documento é rápida e conveniente.
O Pythontex fornece muitos recursos, incluindo o seguinte:
- O documento pode ser compilado sem executar nenhum código Python; O código só precisa ser executado quando é modificado.
- Toda a saída do Python é salva ou armazenada em cache.
- O código é executado em sessões definidas pelo usuário. Se houver várias sessões, as sessões são executadas automaticamente em paralelo usando todos os núcleos disponíveis.
- Erros e avisos são sincronizados com os números de linha do documento .tex, para que você saiba exatamente de onde eles vieram.
- O código pode ser executado, comete ou comete e executado. O destaque da sintaxe é fornecido por pigmentos.
- Qualquer coisa impressa pelo Python é automaticamente trazida para o documento .tex.
- Você pode personalizar quando o código é reexecionado (modificado, erros, avisos, etc.).
- A classe Utilities Pythontex está disponível em todos os códigos executados. Ele permite rastrear automaticamente dependências e especificar arquivos criados que devem ser limpos. Por exemplo, você pode definir o documento para detectar quando os dados depende são modificados, para que o código seja reexecionado.
Um arquivo básico do pythontex se parece com o seguinte:
\documentclass{article}
\usepackage{pythontex}
\begin{document}
\begin{pycode}
#Whatever you want here!
\end{pycode}
\end{document}
Você pode considerar Noweb, que é independente da linguagem e é a base para Sweave. Eu o usei para Python e funciona bem.
Reestruturei um pouco o PWeave de Matti, para que seja possível definir "processadores de pedaços" arbitrários como módulos de plug-in. Isso facilita a extensão de vários aplicativos de preprocessamento de texto baseados em chunk. A versão reestruturada está disponível em https://bitbucket.org/edgimar/pweave/src. Como exemplo, você pode escrever o seguinte documento de Latex-Pweave (observe o "Nome do processador" neste exemplo é especificado com o nome 'mplfig'):
\documentclass[a4paper]{article}
\usepackage{graphicx}
\begin{document}
\title{Test document}
\maketitle
Don't miss the great information in Figure \ref{myfig}!
<<p=mplfig, label=myfig, caption = "Figure caption...">>=
import sys
import pylab as pl
pl.plot([1,2,3,4,5],['2,4,6,8,10'], 'b.', markersize=15)
pl.axis('scaled')
pl.axis([-3,3, -3,3]) # [xmin,xmax, ymin,ymax]
@
\end{document}
Eu também pensei na mesma coisa muitas vezes. Depois de ler suas perguntas e olhar para o seu link, fiz pequenas modificações no driver personalizado do Python Sweave, para o qual você vincule. Eu o modei para manter o código -fonte e produzir a saída também da mesma maneira que a Sweave faz para R.
Eu publiquei a versão modificada e um exemplo aqui: http://mpastell.com/2010/02/09/python-in-sweavea-document/
É verdade que não é ideal, mas estou muito feliz com a saída e gosto da capacidade de incluir R e Python no mesmo documento.
Edite sobre Pylit:
Eu também gosto de Pylit e, ao contrário da minha resposta original, você também pode pegar o OPUT com ele, embora não seja tão elegante quanto Sweave! Aqui está um pequeno exemplo de como fazê -lo:
import sys
# Catch PyLit output
a = range(3)
sys.stdout = open('output.txt', 'w')
print a
sys.stdout = sys.__stdout__
# .. include:: output.txt
O que você está procurando é alcançado com GNU Emacs e modo de organização*. org-mode
faz distante Mais do que pode ser detalhado em uma única resposta, mas os pontos relevantes são:
- Suporte para programação alfabetizada com a capacidade de integrar vários idiomas no mesmo documento (incluindo os resultados de um idioma como entrada para outro idioma).
- Integração gráfica.
- Exportar para o LATEX, HTML, PDF e uma variedade de outros formatos nativamente, gerando automaticamente a marcação (mas você pode fazê -lo manualmente também).
- Tudo é 100% personalizável, permitindo que você adapte o editor às suas necessidades.
Não tenho o Python instalado no meu sistema, mas abaixo está um exemplo de dois idiomas diferentes sendo executados na mesma sessão. O trecho é modificado a partir do maravilhoso Tutorial de Org-Mode R. por Erik Iverson, que explica a configuração e o uso eficaz de org-mode
para tarefas de programação alfabetizadas. este Apresentação Scipy 2013 demonstra como org-mode
pode ser integrado a um fluxo de trabalho (e por acaso usa Python).
Os emacs podem parecer intimidadores. Mas, para estatísticas/ciência de dados, oferece tremendas capacidades que não são oferecidas em nenhum outro lugar ou estão espalhadas por vários sistemas. O EMACS permite que você os integre a uma única interface. Eu acho que Daniel Gopar diz o melhor em seu Tutorial do EMACS,
Vocês são tão preguiçosos? Quero dizer, vamos lá, basta ler o tutorial, cara.
Uma hora ou mais com o tutorial do EMACS abre a porta para algumas ferramentas extremamente poderosas.
* Emacs vem com org-mode
. Nenhuma instalação separada é necessária.
Bem com reticulado que é uma melhor implementação recente de uma interface Python em R, você pode continuar usando o Sweave e Chamado de Python em linha usando o intérprete R. Por exemplo, isso agora funciona em um arquivo de marcação .rnw ou .rmd.
```{r example, include=FALSE}
library(reticulate)
use_python("./dir/python")
```
```{python}
import pandas
data = pandas.read_csv("./data.csv")
print(data.head())
```