Python como um ambiente de trabalho de estatística

355

Muitas pessoas usam uma ferramenta principal como o Excel ou outra planilha, SPSS, Stata ou R para suas necessidades estatísticas. Eles podem recorrer a algum pacote específico para necessidades muito especiais, mas muitas coisas podem ser feitas com uma planilha simples ou um pacote geral de estatísticas ou um ambiente de programação de estatísticas.

Eu sempre gostei do Python como uma linguagem de programação e, para necessidades simples, é fácil escrever um programa curto que calcule o que eu preciso. O Matplotlib me permite traçá-lo.

Alguém mudou completamente, digamos R, para Python? O R (ou qualquer outro pacote de estatísticas) possui muitas funcionalidades específicas para as estatísticas e possui estruturas de dados que permitem pensar nas estatísticas que você deseja executar e menos na representação interna de seus dados. O Python (ou alguma outra linguagem dinâmica) tem o benefício de permitir que eu programe em uma linguagem familiar e de alto nível, e me permite interagir programaticamente com sistemas do mundo real nos quais os dados residem ou dos quais eu posso fazer medições. Mas não encontrei nenhum pacote Python que me permitisse expressar coisas com "terminologia estatística" - de simples estatísticas descritivas a métodos multivariados mais complicados.

O que você pode recomendar se eu quiser usar o Python como um "ambiente de trabalho estatístico" para substituir R, SPSS etc.?

O que eu ganharia e perderia, com base na sua experiência?

Fabian Fagerholm
fonte
5
FYI, há uma nova estatísticas python subreddit que vai off: reddit.com/r/pystats
naught101
Quando você precisa mover as coisas pela linha de comando, pythonpy ( github.com/Russell91/pythonpy ) é uma boa ferramenta.
precisa saber é o seguinte

Respostas:

307

É difícil ignorar a riqueza de pacotes estatísticos disponíveis no R / CRAN. Dito isso, passo muito tempo na terra dos Python e nunca dissuadi alguém de se divertir tanto quanto eu. :) Aqui estão algumas bibliotecas / links que você pode achar úteis para o trabalho estatístico.

  • NumPy / Scipy Você provavelmente já sabe sobre isso. Mas deixe-me destacar o Livro de Receitas, onde você pode ler sobre muitos recursos estatísticos já disponíveis e a Lista de Exemplos, que é uma ótima referência para funções (incluindo manipulação de dados e outras operações). Outra referência útil são as Distribuições de John Cook no Scipy .

  • pandas Esta é uma biblioteca muito boa para trabalhar com dados estatísticos - dados tabulares, séries temporais, dados em painel. Inclui muitas funções integradas para resumos de dados, agrupamento / agregação, rotação. Também possui uma biblioteca de estatística / econometria.

  • Larry Matriz rotulada que funciona bem com o NumPy. Fornece funções estatísticas não presentes no NumPy e boas para manipulação de dados.

  • python-statlib Um esforço relativamente recente que combinou várias bibliotecas de estatísticas dispersas. Útil para estatísticas básicas e descritivas, se você não estiver usando o NumPy ou pandas.

  • statsmodels Modelagem estatística: modelos lineares, GLMs, entre outros.

  • Pacotes de computação estatística e científica - notavelmente suavização, otimização e aprendizado de máquina.

  • PyMC Para suas necessidades de modelagem hierárquica / bayesiana / MCMC. Altamente recomendado.

  • Modelos de mistura PyMix .

  • Biopython Útil para carregar seus dados biológicos no python e fornece algumas ferramentas rudimentares de estatística / aprendizado de máquina para análise.

Se a velocidade se tornar um problema, considere o Theano - usado com bom sucesso pelas pessoas que aprendem profundamente.

Existem muitas outras coisas por aí, mas é isso que acho mais útil ao longo das linhas que você mencionou.

ars
fonte
16
Todas as respostas foram úteis e merecem ser aceitas. Este, no entanto, faz um trabalho muito bom em responder à pergunta: com o Python, você precisa reunir muitas peças para fazer o que deseja. Esses ponteiros, sem dúvida, serão muito úteis para quem deseja fazer estatísticas / modelagem / etc. com Python. Obrigado a todos!
Fabian Fagerholm
1
@ars, por favor, você sabe qual é a melhor maneira de usar o Python no Windows?
Stéphane Laurent
1
@ StéphaneLaurent Normalmente, eu mesmo instalo as várias peças, mas para um início / instalação rápido, você pode considerar: pythonxy .
Ars
Este script instala muitas das bibliotecas citadas acima: fonnesbeck.github.com/ScipySuperpack
Pe.
Pythonxy é bom, mas pode ser irritante se você quiser fazer cálculos grandes, pois está disponível apenas para 32 bits. Aqui estão binários não oficiais para instalar muitos pacotes python. Eles podem ser bastante úteis se você decidir trabalhar no Windows. lfd.uci.edu/~gohlke/pythonlibs @ StéphaneLaurent
JEquihua
140

Como uma plataforma numérica e um substituto para o MATLAB, o Python atingiu a maturidade há pelo menos 2 a 3 anos e agora é muito melhor do que o MATLAB em muitos aspectos. Eu tentei mudar para Python do R naquela época e falhei miseravelmente. Existem muitos pacotes R que eu uso diariamente que não têm equivalente em Python. A ausência do ggplot2 é suficiente para impedir o show, mas existem muitos mais. Além disso, R possui uma sintaxe melhor para análise de dados. Considere o seguinte exemplo básico:

Python :

results = sm.OLS(y, X).fit()

R :

results <- lm(y ~ x1 + x2 + x3, data=A)

O que você considera mais expressivo? Em R, você pode pensar em termos de variáveis ​​e pode estender facilmente um modelo para, digamos,

lm(y ~ x1 + x2 + x3 + x2:x3, data=A)

Comparado ao R, o Python é uma linguagem de baixo nível para construção de modelos.

Se eu tivesse menos requisitos para funções estatísticas avançadas e já estivesse codificando Python em um projeto maior, consideraria o Python um bom candidato. Eu consideraria isso também quando é necessária uma abordagem básica, devido às limitações de velocidade ou porque os pacotes R não fornecem uma vantagem.

Para aqueles que fazem estatísticas relativamente avançadas no momento , a resposta é simples e não é . Na verdade, acredito que o Python limitará a maneira como você pensa sobre a análise de dados. Levará alguns anos e muitos anos de esforços para produzir as substituições de módulos para os 100 pacotes R essenciais e, mesmo assim, o Python parecerá uma linguagem na qual os recursos de análise de dados foram utilizados. Como R já capturou a maior parcela relativa de estatísticos aplicados em vários campos, não vejo isso acontecendo tão cedo. Dito isto, é um país livre, e eu conheço pessoas que fazem estatísticas em APL e C.

gappy
fonte
9
+1 Gosto dessa resposta devido à ênfase que você coloca no R como linguagem estatística para trabalhar com dados usando fórmulas e afins. Dito isto, estou esperando um grande impacto positivo dos pandas (combinado com o statsmodels) na comunidade Python.
chl
28
na comunidade Python, o patsy está atendendo à necessidade de "fórmula", que você descreve, às vezes aprimorando o que o R oferece: patsy.readthedocs.org/en/v0.1.0/index.html O que é bom no Python é que tudo isso aspectos são tratados ortogonalmente. O Pandas cuidará das séries temporais e da representação do quadro de dados / séries. patsy para as fórmulas. numpy para representação e vetorização de matrizes. statsmodels envolve estatísticas algos. Scipy para otimização e um monte de outras coisas. O resultado são interfaces mais limpas. R, em comparação, é mais maduro, mas é uma bola de pêlo. ../ ..
blais 13/08/2012
3
../ .. Acho que, a longo prazo, as forças avançarão cada vez mais na integração do Python e você descobrirá que ele se tornará um grande concorrente do R. A limpeza de dados no R é uma PIA comparável ao Python, e nunca é uma parte trivial do trabalho. - blais
chl
9
como uma atualização: o primeiro exemplo na documentação do statsmodels é agora results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit(). O Statsmodels ainda está muito atrás de outros pacotes estatísticos, como R em termos de cobertura, mas há mais e mais coisas que você pode fazer em python antes de precisar pegar outro idioma ou pacote estatístico. (GEE e Misto será no próximo lançamento.)
Josef
4
"O que é legal no Python é que todos esses aspectos são tratados ortogonalmente ...". Eu discordo de várias contagens. Existem sobreposições significativas entre os modelos numpy, scipy e stats. O design da R é muito mais modular e econômico. Além disso, a maioria não apresenta todas as inovações conceituais em linguagens orientadas a dados (não apenas fórmulas, mas também quadros de dados, uma gramática de gráficos, acento circunflexo como gramática de medels, knitr e a gramática ainda em desenvolvimento de dplyr) se originaram em R. A comunidade Python parece sempre um passo atrás e excessivamente focada no desempenho.
gappy
95

Primeiro, deixe-me dizer que concordo com a resposta de John D Cook: Python não é uma linguagem específica de domínio como R e, portanto, há muito mais que você poderá fazer com isso mais adiante. É claro que R sendo DSL significa que os algoritmos mais recentes publicados no JASA quase certamente estarão no R. Se você estiver trabalhando principalmente ad hoc e quiser experimentar a mais recente técnica de regressão do laço, digamos, R é difícil de derrotar. Se você estiver realizando mais trabalho analítico de produção, integrando-se a ambientes e softwares existentes e preocupado com velocidade, extensibilidade e manutenção, o Python o servirá muito melhor.

Segundo, o ars deu uma ótima resposta com bons links. Aqui estão mais alguns pacotes que considero essenciais para o trabalho analítico no Python:

  • matplotlib para obter belos gráficos com qualidade de publicação.
  • IPython para um console Python interativo aprimorado. Importante, o IPython fornece uma estrutura poderosa para computação paralela interativa em Python.
  • Cython para escrever facilmente extensões C em Python. Este pacote permite que você pegue um pedaço de código Python com uso intensivo de computação e o converta facilmente em uma extensão C. Você poderá carregar a extensão C como qualquer outro módulo Python, mas o código será executado muito rápido, pois está em C.
  • PyIMSL Studio para uma coleção de centenas de algoritmos matemáticos e estatísticos que são completamente documentados e suportados. Você pode chamar exatamente os mesmos algoritmos de Python e C, com quase a mesma API e obterá os mesmos resultados. Divulgação completa: trabalho neste produto, mas também o uso muito.
  • xlrd para ler facilmente arquivos do Excel.

Se você deseja um IDE / console interativo mais semelhante ao MATLAB, consulte Spyder ou o plugin PyDev para Eclipse .

Josh Hemann
fonte
15
R não é um DSL no sentido usual do termo. É uma linguagem de programação completa e completa de Turing.
21811
4
@hadley: Talvez eu esteja usando o "DSL" muito coloquialmente, mas para o que vale a pena, a página da Wikipedia em DSLs lista explicitamente S + e R como exemplos de DSLs e Python como linguagem de uso geral. Consulte en.wikipedia.org/wiki/Domain-specific_language . Na mesma linha, o SAS é Turing-complete (apenas se o componente macro IML for usado), mas eu dificilmente chamaria uma linguagem completa em um sentido prático. Acho R inestimável no meu trabalho, mas tento codificar usando linguagens de uso geral o máximo possível, em vez de tentar fazer tudo no R (ou no Excel, nesse caso).
Josh Hemann 13/10
16
Eu acho que é injusto incluir R e S na mesma lista que os outros idiomas na wikipedia - não há nada que você não possa fazer em R que você possa fazer em python. É claro que existem muitas coisas que são mais adequadas para outra linguagem de programação, mas o mesmo acontece com o Python.
Hadley
6
Ah, hadley removeu R e S + da página da Wikipedia no mesmo dia em que trocamos comentários, em 13 de outubro de 2011. Então, ouço muitas vezes o mantra "R foi desenvolvido por e para estatísticos" como sua força fundamental. Aparentemente, agora é uma linguagem de propósito geral, também ...
Josh Hemann
5
Bem, posso ter código multiencadeado com R? E / S assíncrona de rede? Acredite, esses casos realmente surgem na computação científica. R é uma DSL, na minha opinião. É forte nas estatísticas e ruim na maioria das outras coisas.
Gael Varoquaux
61

Não creio que exista um argumento de que a variedade de pacotes estatísticos em cran e Bioconductor exceda em muito qualquer coisa oferecida em outros idiomas, no entanto, essa não é a única coisa a considerar.

Na minha pesquisa, eu uso R quando posso, mas às vezes R é muito lento. Por exemplo, uma grande execução do MCMC.

Recentemente, eu combinei python e C para resolver esse problema. Breve resumo: ajustando um grande modelo populacional estocástico com ~ 60 parâmetros e inferindo cerca de 150 estados latentes usando o MCMC.

  1. Leia os dados em python
  2. Construa as estruturas de dados C em python usando ctypes .
  3. Usando um forloop python , chame as funções C que atualizaram os parâmetros e calcularam a probabilidade.

Um cálculo rápido mostrou que o programa gastou 95% em funções C. No entanto, não tive que escrever um código C doloroso para ler dados ou construir estruturas de dados C.


Eu sei que também há rpy , onde python pode chamar funções R. Isso pode ser útil, mas se você está "apenas" fazendo estatísticas, eu usaria R.

csgillespie
fonte
29
Inserir plug descarado para Rcpp :)
Dirk Eddelbuettel
curioso se você já experimentou o PyMC e como o desempenho se compara (em relação ao python / C) aos seus modelos.
ars
@ars: No caso acima, cada iteração (das 10 ^ 8 iterações) envolvia a solução de 5 ODEs. Isso realmente tinha que ser feito em C. O restante do código era bastante simples e, portanto, o código C era direto. Meu aplicativo não era padrão e, portanto, o PyMC não era aplicável - também foi ~ dois anos atrás.
precisa saber é o seguinte
36

Eu não vi o scikit-learn explicitamente mencionado nas respostas acima. É um pacote Python para aprendizado de máquina em Python. É relativamente jovem, mas cresce extremamente rapidamente (aviso: sou um desenvolvedor de scikit-learn). Seus objetivos são fornecer ferramentas algorítmicas padrão de aprendizado de máquina em uma interface unificada, com foco na velocidade e na usabilidade. Até onde eu sei, você não encontra nada parecido no Matlab. Seus pontos fortes são:

  • Uma documentação detalhada , com muitos exemplos

  • Ferramentas de aprendizado supervisionado (regressão / classificação) de alto padrão de qualidade . Especificamente:

  • A capacidade de executar a seleção de modelo por validação cruzada usando várias CPUs

  • Aprendizado não supervisionado para explorar os dados ou fazer uma redução de primeira dimensionalidade, que pode ser facilmente acorrentada ao aprendizado supervisionado.

  • Código aberto, BSD licenciado. Se você não está em um ambiente puramente acadêmico (eu estou no que seria um laboratório nacional no estado), isso importa muito, pois os custos do Matlab são muito altos e você pode estar pensando em derivar produtos do seu trabalho.

O Matlab é uma ótima ferramenta, mas no meu próprio trabalho, o scipy + scikit-learn está começando a me dar uma vantagem no Matlab porque o Python faz um trabalho melhor com a memória devido ao seu mecanismo de exibição (e eu tenho grandes dados) e porque o O scikit-learn me permite comparar com facilidade diferentes abordagens.

Gael Varoquaux
fonte
29

Um benefício da mudança para o Python é a possibilidade de realizar mais trabalhos em um idioma. O Python é uma escolha razoável para processamento de números, criação de sites, scripts administrativos, etc. Portanto, se você fizer suas estatísticas no Python, não precisará mudar de idioma para realizar outras tarefas de programação.

Atualização: em 26 de janeiro de 2011, a Microsoft Research anunciou o Sho , um novo ambiente baseado em Python para análise de dados. Ainda não tive chance de testá-lo, mas parece uma possibilidade interessante se você deseja executar o Python e também interagir com as bibliotecas do .NET.

John D. Cook
fonte
4
Eu fiz um monte de trituração de números, um site e alguns scripts administrativos no R e eles estão funcionando muito bem.
28

Talvez essa resposta esteja enganando, mas parece estranho que ninguém tenha mencionado o projeto rpy , que fornece uma interface entre R e Python. Você obtém uma API pitônica para a maioria das funcionalidades de R, mantendo a sintaxe (eu diria melhor), o processamento de dados e, em alguns casos, a velocidade do Python. É improvável que o Python tenha tantas ferramentas estatísticas de ponta quanto R, apenas porque R é um dsl e a comunidade de estatísticas é mais investida em R do que possivelmente em qualquer outro idioma.

Eu vejo isso como análogo ao uso de um ORM para aproveitar as vantagens do SQL, enquanto permite que Python seja Python e SQL seja SQL.

Outros pacotes úteis especificamente para estruturas de dados incluem:

  • pydataframe replica um data.frame e pode ser usado com o rpy. Permite usar operações e filtragem do tipo R.
  • pyTables Usa o tipo de dados rápido hdf5 abaixo, existe há séculos
  • h5py Também hdf5, mas especificamente destinado a interoperar com numpy
  • pandas Outro projeto que gerencia data.frame como dados, trabalha com rpy, pyTables e numpy
Griffith Rees
fonte
1
Eu sempre acho rpy desleixado para trabalhar. Requer linhas grandes de códigos com algumas funções simples, por exemplo.
Néstor
Talvez a extensão rmagic para IPython (como apontado por @CarlSmith) possa facilitar o trabalho com rpy2? Consulte ipython.org/ipython-doc/dev/config/extensions/rmagic.html .
19613 Jonathan
26

Sou bioestatístico no que é essencialmente uma loja de R (~ 80 das pessoas usam R como sua principal ferramenta). Ainda assim, passo aproximadamente 3/4 do meu tempo trabalhando em Python. Atribuo isso principalmente ao fato de que meu trabalho envolve abordagens bayesianas e de aprendizado de máquina para modelagem estatística. O Python atinge muito mais perto do ponto ideal de desempenho / produtividade do que o R, pelo menos para métodos estatísticos iterativos ou baseados em simulação. Se eu estivesse realizando ANOVAS, regressões e testes estatísticos, tenho certeza de que usaria o R. principalmente. A maior parte do que preciso, no entanto, não está disponível como um pacote R enlatado.

fonnesbeck
fonte
5
+1 para distinguir em que área da estatística você trabalha. Existem áreas da computação estatística (por exemplo, análise de texto não estruturada e visão computacional) para as quais existe muita funcionalidade no Python, e o Python é aparentemente a língua franca nesses subdomínios. Eu acho que onde a comunidade Python precisa acompanhar é melhorar as estruturas de dados e a semântica em torno da modelagem estatística clássica na qual o design de R é tão bom. Os desenvolvedores scikits.statsmodels estão fazendo um grande progresso nessa frente: scikits.appspot.com/statsmodels
Josh Hemann
26

Gostaria de dizer que, do ponto de vista de alguém que se apóia fortemente em modelos lineares para o meu trabalho estatístico e adora o Python por outros aspectos do meu trabalho, fiquei muito desapontado com o Python como uma plataforma para fazer qualquer coisa, exceto estatísticas bastante básicas.

Acho que R tem um suporte muito melhor da comunidade estatística, implementação muito melhor de modelos lineares e, para ser franco, do ponto de vista das estatísticas, mesmo com excelentes distribuições como a Enthought, o Python se parece um pouco com o Oeste Selvagem.

E, a menos que você esteja trabalhando sozinho, as chances de você ter colaboradores que usam o Python para estatísticas, neste momento, são muito pequenas.

Fomite
fonte
26

Realmente, não há necessidade de desistir do R for Python. Se você usa o IPython com uma pilha completa, possui extensões R, Octave e Cython, para que você possa usar de maneira fácil e limpa essas linguagens nos seus blocos de anotações IPython. Você também tem suporte para passar valores entre eles e seu espaço para nome Python. Você pode enviar seus dados como plotagens, usando matplotlib e expressões matemáticas adequadamente renderizadas. Existem muitos outros recursos e você pode fazer tudo isso no seu navegador.

O IPython percorreu um longo caminho :)

Carl Smith
fonte
19

O que você está procurando é chamado Sage: http://www.sagemath.org/

É uma excelente interface online para uma combinação bem construída de ferramentas Python para matemática.

Adão
fonte
4
A parte brilhante do Sage é que ele é essencialmente a união de várias ótimas ferramentas gratuitas para matemática, estatística, análise de dados, etc. É mais do que apenas Python; ele tem acesso a R, maxima, GLPK, GSL e muito mais.
shabbychef
18

Rpy2 - brinque com R em Python ...

Elaboração adicional por solicitação de Gung:

A documentação do Rpy2 pode ser encontrada em http://rpy.sourceforge.net/rpy2/doc-dev/html/introduction.html

A partir da documentação, a interface de alto nível no rpy2 foi projetada para facilitar o uso do R pelos programadores Python. Os objetos R são expostos como instâncias de classes implementadas em Python, com funções R como métodos vinculados a esses objetos em vários casos. Esta seção também contém uma introdução aos gráficos com gráficos R: trellis (treliça), bem como a gramática dos gráficos implementados no ggplot2, permitindo fazer gráficos complexos e informativos com pouco código escrito, enquanto os gráficos subjacentes da grade permitem descrever toda a personalização possível.

Porque é que gosto disto:

Eu posso processar meus dados usando a flexibilidade do python, transformá-los em uma matriz usando numpy ou pandas e fazer o cálculo em R e recuperar objetos r para fazer o pós-processamento. Eu uso econometria e o python simplesmente não terá as ferramentas estatísticas de ponta da R. e R provavelmente nunca será tão flexível quanto o python. Isso requer que você entenda R. Felizmente, ele tem uma boa comunidade de desenvolvedores.

O próprio Rpy2 é bem suportado e o cavalheiro que o apoia frequenta os fóruns de SO. A instalação do Windows talvez seja uma pequena dor - https://stackoverflow.com/questions/5068760/bizzarre-issue-trying-to-make-rpy2-2-1-9-work-with-r-2-12-1-using -python-2-6-un? rq = 1 pode ajudar.

pythOnometrist
fonte
1
Bem-vindo ao site, @pythOnometrist. Suspeito que esta seja uma contribuição útil. Você se importaria em dar um breve resumo do Rpy2, para que os leitores possam decidir se é o que estão procurando?
gung
17

Eu uso o Python para análise estatística e previsão. Como mencionado por outros acima, Numpy e Matplotlib são bons cavalos de batalha. Eu também uso o ReportLab para produzir saída em PDF.

Atualmente, estou analisando o Resolver e o Pyspread, que são aplicativos de planilha semelhante ao Excel, baseados em Python. O resolvedor é um produto comercial, mas o Pyspread ainda é de código aberto. (Desculpas, estou limitado a apenas um link)

Turukawa
fonte
1
Mais uma vez, algumas ferramentas interessantes. Eu sabia sobre o Numpy, o Matplotlib e o ReportLab, mas o Pyspread parece uma ideia interessante. Pelo menos eu gostaria de digitar expressões Python nas células da planilha. Embora não resolva todos os problemas possíveis, pode ser bom para criar protótipos e brincar com os dados.
Fabian Fagerholm
1
+1 Uau planilhas python! Ainda não tinha ouvido falar disso. Eu sempre desejei OpenOffice / BrOffice realmente abraçar e integrar python scripting em seu software de planilha
Utilizador
15

ótima visão geral até agora. Estou usando python (especificamente scipy + matplotlib) como um substituto do matlab desde 3 anos trabalhando na Universidade. Às vezes, ainda volto porque estou familiarizado com bibliotecas específicas, por exemplo, o pacote matlab wavelet é absolutamente incrível.

Eu gosto da distribuição http://enthought.com/ python. É comercial, mas gratuito para fins acadêmicos e, tanto quanto eu sei, completamente de código aberto. Como estou trabalhando com muitos alunos, antes de usar o entusiasmo, às vezes era problemático para eles instalarem numpy, scipy, ipython etc. A Enthought fornece um instalador para Windows, Linux e Mac.

Dois outros pacotes que vale a pena mencionar:

  1. ipython (já vem com entusiasmo) ótimo shell avançado. uma boa introdução está em showmedo http://showmedo.com/videotutorials/series?name=PythonIPythonSeries

  2. nltk - o pacote de ferramentas de linguagem natural http://www.nltk.org/, ótimo pacote, caso você queira fazer algumas estatísticas / aprendizado de máquina em qualquer corpus.

kgarten
fonte
12

Esta é uma pergunta interessante, com ótimas respostas.

Você pode encontrar alguma discussão útil em um artigo que escrevi com Roseline Bilina. A versão final está aqui: http://www.enac.fr/recherche/leea/Steve%20Lawford/papers/python_paper_revised.pdf (desde então, apareceu, quase nesta forma, como "Python para pesquisa unificada em econometria e estatística ", em Econometric Reviews (2012), 31 (5), 558-591).

Steve Lawford
fonte
10

Talvez não esteja diretamente relacionado, mas o R possui um bom ambiente de GUI para sessões interativas (editar: no Mac / Windows). O IPython é muito bom, mas para um ambiente mais próximo do Matlab, você pode experimentar o Spyder ou o IEP. Tive melhor sorte ultimamente usando o IEP, mas o Spyder parece mais promissor.

IEP: http://code.google.com/p/iep/

Spyder: http://packages.python.org/spyder/

E o site do IEP inclui uma breve comparação de software relacionado: http://code.google.com/p/iep/wiki/Alternatives

JMS
fonte
9

Encontrei uma ótima introdução aos pandas aqui que sugiro que confira. O Pandas é um incrível conjunto de ferramentas e fornece os recursos de alto nível de análise de dados do R com as extensas bibliotecas e qualidade de produção do Python.

Esta postagem do blog fornece uma excelente introdução ao Pandas da perspectiva de um iniciante completo:

http://manishamde.github.com/blog/2013/03/07/pandas-and-python-top-10/

padawan
fonte
3
Você poderia escrever algumas palavras sobre quais qualidades o tornam "ótimo" para que os leitores possam determinar com antecedência se a visualização seria apropriada para eles?
whuber
1
Desculpa. Acabei de perceber que anexei o link errado no meu post original.
Padawan
8

Devo adicionar uma mensagem para o Sho, o ambiente de computação numérica criado no IronPython. Estou usando agora para a aula de aprendizado de máquina de Stanford e tem sido realmente útil. Ele foi construído em pacotes de álgebra linear e recursos de gráficos. Sendo .Net, é fácil estender com C # ou qualquer outro idioma .Net. Eu achei muito mais fácil começar, sendo um usuário do Windows, do que Python e NumPy diretos.

pnewhook
fonte
8

Ninguém mencionou Orange antes:

Mineração de dados por meio de programação visual ou script Python. Componentes para aprendizado de máquina. Complementos para bioinformática e mineração de texto. Embalado com recursos para análise de dados.

Não o uso diariamente, mas é obrigatório para quem prefere a GUI à interface de linha de comando.

Mesmo se você preferir o último, é uma boa coisa para se familiarizar com o Orange, pois você pode importar facilmente pedaços de Orange para seus scripts Python, caso precise de algumas de suas funcionalidades.

Wojciech Walczak
fonte
7

Observe que o SPSS Statistics possui uma interface Python integrada (também R). Assim, você pode escrever programas Python que usam procedimentos de Estatística e produzir a saída normal de Estatísticas bem formatada ou retornar resultados ao seu programa para processamento adicional. Ou você pode executar programas Python no fluxo de comandos Estatísticas. Você ainda precisa conhecer a linguagem de comando do Statistics, mas pode tirar proveito de todo o gerenciamento de dados, saída da apresentação etc. que o Statistics fornece, bem como os procedimentos.

JKP
fonte
7

A comparação recente do DataCamp fornece uma imagem clara sobre R e Python.

O uso desses dois idiomas no campo de análise de dados. O Python é geralmente usado quando as tarefas de análise de dados precisam ser integradas aos aplicativos da Web ou se o código estatístico precisa ser incorporado a um banco de dados de produção. R é usado principalmente quando as tarefas de análise de dados requerem computação ou análise independente em servidores individuais.

Achei isso muito útil neste blog e espero que ajude outras pessoas também a entender as tendências recentes nesses dois idiomas. Julia também está chegando na área. Espero que isto ajude !

Learner
fonte
6

Acredito que Python é uma bancada de trabalho superior em meu campo. Realizo várias tarefas de raspagem, manipulação de dados, trabalho com grandes dados, análise de rede, modelagem bayesiana e simulações. Todas essas coisas normalmente precisam de velocidade e flexibilidade, então acho que o Python funciona melhor que o R nesses casos. Aqui estão algumas coisas sobre Python que eu gosto (algumas são mencionadas acima, outras não):

Sintaxe -Cleaner; código mais legível. Acredito que o Python seja uma linguagem mais moderna e sintaticamente consistente.

-Python possui Notebook, Ipython e outras ferramentas incríveis para compartilhamento de código, colaboração e publicação.

O bloco de notas -iPython permite que você use R no código Python, para que seja sempre possível voltar para R.

-Sensivelmente mais rápido sem o recurso C. O uso do Cython, NUMBA e outros métodos de integração C colocará seu código em velocidades comparáveis ​​ao C. puro. Isso, tanto quanto sei, não pode ser alcançado em R.

-Pandas, Numpy e Scipy sopram o padrão R para fora da água. Sim, existem algumas coisas que o R pode fazer em uma única linha, mas usa o Pandas 3 ou 4. Em geral, no entanto, o Pandas pode lidar com conjuntos de dados maiores, é mais fácil de usar e oferece incrível flexibilidade em relação à integração com outros Python. pacotes e métodos.

-Python é mais estável. Tente carregar um conjunto de dados 2gig no RStudio.

-Um pacote interessante que não parece mencionado acima é o PyMC3 - ótimo pacote geral para a maioria da sua modelagem bayesiana.

-Alguns mencionados acima, ggplot2 e grub sobre sua ausência do Python. Se você já usou as funcionalidades gráficas do Matlab e / ou o matplotlib no Python, saberá que as últimas opções geralmente são muito mais capazes que o ggplot2.

No entanto, talvez R seja mais fácil de aprender e eu o uso com frequência nos casos em que ainda não estou muito familiarizado com os procedimentos de modelagem. Nesse caso, a profundidade das bibliotecas estatísticas prontas para uso de R é imbatível. Idealmente, eu conheceria os dois bem o suficiente para poder usar conforme necessário.

Gene Burin
fonte
5

Para quem precisa trabalhar no Windows, o Anaconda ( https://store.continuum.io/cshop/anaconda/ ) realmente ajuda muito. Instalar pacotes no Windows foi uma dor de cabeça. Com o Anaconda instalado, você pode configurar um ambiente de desenvolvimento pronto para uso com um liner.

Por exemplo, com

conda create -n stats_env python pip numpy scipy matplotlib pandas

todos esses pacotes serão buscados e instalados automaticamente.

Yu-Yang
fonte
5

O Python ainda tem um longo caminho a percorrer antes de poder ser comparado ao R. Ele possui significativamente menos pacotes que o R e é de menor qualidade. As pessoas que seguem o básico ou dependem apenas de suas bibliotecas personalizadas provavelmente poderiam fazer seu trabalho exclusivamente em Python, mas se você é alguém que precisa de soluções quantitativas mais avançadas, ouso dizer que nada chega perto do R por aí.

Deve-se notar também que, até o momento, o Python não possui um IDE científico no estilo Matlab comparável ao R-Studio (por favor, não diga Spyder) e você precisa resolver tudo no console. De um modo geral, toda a experiência em Python requer uma boa quantidade de "geekness" que a maioria das pessoas não tem e nem se importa.

Não me interpretem mal, eu amo Python, na verdade é a minha linguagem favorita que, ao contrário do R, é uma linguagem de programação real . Ainda assim, quando se trata de análise pura de dados, sou dependente do R, que é de longe a solução mais especializada e desenvolvida até o momento. Eu uso o Python quando preciso combinar a análise de dados com a engenharia de software, por exemplo, criar uma ferramenta que irá executar a automação nos métodos que eu programei pela primeira vez em um script R sujo. Em muitas ocasiões, uso o rpy2 para chamar R do Python, porque na grande maioria dos casos os pacotes R são muito melhores (ou não existem no Python). Dessa forma, tento obter o melhor dos dois mundos.

Ainda uso algum Matlab para o puro desenvolvimento de algoritmos, já que adoro a sintaxe e a velocidade no estilo matemático.

Digio
fonte