Quando se trata de Ciência de Dados, uma pergunta sempre vem à tona: R ou Python para análise de dados? Apesar de existirem muitas outras possibilidades, estas duas linguagens tem polarizado as discussões sobre que ferramenta utilizar para análise. As duas linguagens são simples (e gratuitas) para instalar e relativamente fáceis de começar a usar. Se você está começando sua jornada no mundo da Ciência de Dados e não tem experiência com programação em geral, faz sentido aprender R ou Python primeiro.
R
R tem uma história longa e confiável e uma forte comunidade de suporte no setor de dados. Juntos, esses fatores significam que você pode contar com o apoio on-line de outros, se você precisar de ajuda ou tiver dúvidas sobre a utilização da linguagem. Além disso, há uma abundância de pacotes lançados publicamente (mais de 5.000), que podem ser baixados para estender as capacidades da linguagem. Isso faz R ótimo para a execução de complexas análises de dados exploratórios. R também se integra bem com outras linguagens de programação como C ++, Java e C. Quando é preciso fazer análises estatísticas pesadas ou gráficas, R mostra sua força.
Python
Python é uma linguagem de programação de uso geral que pode fazer praticamente qualquer coisa que você precisa: coleta de dados, engenharia de dados, análise, Web Scraping, construção de aplicativos web e muito mais. É mais simples de dominar do que R se você já aprendeu uma linguagem de programação orientada a objetos como Java ou C ++. Além disso, como Python é uma linguagem de programação orientada a objetos, é mais fácil escrever em grande escala e com código robusto, do que com R.
Embora Python não tenha um conjunto de pacotes e bibliotecas tão abrangente como os disponíveis para a linguagem R, a combinação de Python com ferramentas como Pandas, Numpy, Scipy, Scikit-learn e Seaborn, torna a linguagem uma das principais escolhas entre os Cientistas de Dados. A linguagem também está lentamente se tornando útil para tarefas em Machine Learning e de base para o trabalho estatístico intermediário (anteriormente apenas sob o domínio de R).
Abaixo uma tabela comparativa entre as duas linguagens:
Python |
R |
|
Data de criação |
1991 |
1995 |
Versão atual |
3.6.4 (lançada em 13/09/2015) |
3.4.4 (lançada em 10/12/2015) |
Origem |
Python foi inspirada na linguagem C, Modula-3 e ABC. |
R foi uma implementação da linguagem S da Bell Labs. |
Usabilidade |
Codificação e Debugging é mais fácil, pois a sintaxe é bem simples. |
Modelos estatísticos podem ser escritos com poucas linhas de código. |
Padronização |
Python possui um padrão mais bem definido, permitindo que diferentes tipos de funcionalidades sejam escritos da mesma forma. |
A mesma funcionalidade pode ser escrita de diversas formas diferentes em R. |
Flexibilidade |
Python é bastante flexível e permite facilmente escrever algo a partir do zero. |
É fácil escrever formulas complexas em R. Praticamente todos os tipos de testes e modelos estatísticos estão disponíveis para uso na linguagem. |
Repositórios |
PyPi é o repositório de Python, com diversas bibliotecas. Usuários podem contribuir com novos pacotes. |
CRAN (Comprehensive R Archive Network) é o repositório da linguagem R em que cada usuário pode contribuir com novos pacotes (que são coleções de funções em R com código compilado). Esses pacotes podem ser facilmente instalados com uma linha de código. |
Usando as duas linguagens juntas |
Use a biblioteca RPy2 para executar código R dentro do Python. Ele provê uma interface entre as linguagens. |
Use o pacote rPython para executar pacotes do Python dentro do código R. É possível passar e receber dados de Python, chamar funções ou métodos. |
Uso em Análise de Dados |
Python é principalmente usada quando a análise de dados precisa ser integrada com aplicativos web ou se o código estatístico precisa ser integrado em um servidor em ambiente de produção, que vai servir muitos usuários. |
R é principalmente usada quando as atividades de análise de dados requerem computação standalone (em um único computador) ou análise em servidores individuais. |
Tratamento de dados |
Python não foi criada inicialmente para análise de dados, mas a linguagem tem crescido rapidamente e cada vez oferece mais recursos. |
R é extremamente eficiente em análise de dados, devido seu grande número de pacotes com modelos, fórmulas e testes estatísticos. |
IDE |
Python IDE, Spyder e IPython Notebook |
RStudio |
Pacotes mais populares | · SciPy / NumPy (computação científica)
· Pandas (manipulação de dados) · Matplotlib (gráficos) · Scikit-learn (Machine Learning) |
· dplyr, plyr e data.table (manipulação de dados)
· stringr (manipulação de strings) · zoo (time-series) · ggvis, lattice e ggplot2 (gráficos) · caret (Machine Learning) |
Pontos positivos | · Python é ótima para criação de scripts e automatização de regras para mineração de dados.
· Se integra facilmente em um fluxo de trabalho de produção de desenvolvimento. · Pode ser usada em diferentes partes no processo de desenvolvimento de software (back-end, front-end) · IPython Notebook é uma poderosa ferramenta para análise exploratória e apresentações. |
· R é ótimo para prototipagem e para análise estatística.
· R tem um enorme conjunto de bibliotecas disponíveis para análise de diferentes tipos de estatística. · Rstudio IDE é definitivamente uma grande vantagem. Ele facilita a maioria das tarefas tediosas e facilita o fluxo de trabalho. |
Pontos Negativos | · Não é tão completo para análise estatística como R, mas já percorreu um longo caminho nestes últimos anos.
· Na minha opinião, a curva de aprendizado é mais acentuada do que R, por se tratar de uma linguagem muito mais completa. |
· A sintaxe pode ser obscura, às vezes.
· É mais difícil de integrar a um fluxo de desenvolvimento de produção. · Na minha opinião, é mais adequado para tarefas do tipo “consultoria”. |
Propósito |
Python é uma linguagem de uso geral, com características inerentes a outras linguagens de programação de computadores. Isso permite que pessoas com diferentes backgrounds possam utilizar a linguagem. |
R foi desenvolvida por estatísticos, para estatísticos. Engenheiros, cientistas e estatísticos sem conhecimento de programação de computadores, consideram R fácil de usar. |
Velocidade |
Python é considerada uma das linguagens de programação mais velozes atualmente. |
R foi desenvolvida para fazer análise de dados, não para ser rápida. Entretanto, o código pode ser otimizado. O problema, é que a linguagem é bastante utilizada por quem não possui conhecimentos de programação, tornando o código mais lento do que deveria. |
Em geral, você não vai errar se optar por aprender Python ou R para análise de dados. Cada linguagem tem seus prós e contras em diferentes cenários e tarefas. Além disso, existem bibliotecas para usar Python com R e vice-versa, de modo que aprender uma não vai impedi-lo de aprender e usar a outra. Talvez a melhor solução seja utilizar as orientações acima para decidir qual das duas linguagens começar a aprender e em seguida, fortalecer seu conjunto de habilidades aprendendo a outra.
Portanto, não existe a melhor linguagem. A pergunta chave é: que problema de negócio precisa ser resolvido? E a partir daí, escolher a melhor ferramenta. Ao longo da minha carreira aprendi que não existe a melhor tecnologia. Existe tecnologia que resolve melhor um problema da área de negócios. No fim, é para isso que todas as tecnologias são usadas.
David Matos
Referências:
Python Fundamentos Para Análise de Dados
R Fundamentos Para Análise de Dados
Não vejo problemas em aprender as duas linguagens, só teria a agregar no conhecimento.
Eu por exemplo, aprendo um pouco das duas sempre que possível.
Olá Rafael,
Concordo plenamente. As duas linguagens se complementam e existem diversos pacotes para interoperabilidade entre elas.
Abs
David
Gostaria de aprender ambas linguagens, como posso começar?
Conhecem algum curso interessante sobre o assunto que posso me dedicar ou o negócio é youtube mesmo?
obrigado!
Olá Tiago. Dá uma olhada no curso gratuito de Python Fundamentos da Data Science Academy: https://www.datascienceacademy.com.br/public-course?courseid=python-fundamentos. É uma excelente forma de começar. Abs
Muito obrigado, Davi!
Bom dia, qual a melhor ferramenta (linguagem de programação) para utilizar em análise de dados das movimentações contábeis, fiscais de uma empresa? Preciso criar uma ferramenta que eu consiga verificar se a empresa está adequada ao compliance? Que eu também consiga fazer o confronto de dados entre essas movimentações? É mais uma ferramenta para consultoria e através desta ferramenta eu consiga recuperar impostos.
Qual a melhor ferramenta no mercado para isso? Python, R, Power BI, Java, C++?
Olá Alex. Com linguagens de programação tudo isso pode ser feito, mas requer desenvolvimento! Comece explorando o Power BI e aqui tem um excelente curso gratuito:
https://www.datascienceacademy.com.br/course?courseid=microsoft-power-bi-para-data-science
Sensacional, Davi. Obrigado!
Valeu. Obrigado. 🙂
A questão fundamental é a seguinte:
É POSSÍVEL ANALISAR DADOS SEM A ESTATÍSTICA?
Se sua resposta for sim: opte pelo Python.
Se sua resposta for não: opte pelo R.
Minha resposta é não: logo optei por R.
Até porque meu foco é a análise (dos dados) … e não a programação (das instruções)…
Demorei… mas evolui ;–)
Agora, meu objetivo não é programar… embora eu tenha que criar uns scripts aqui e ali…
Preciso mesmo é da informação extraída na análise estatística dos dados.
E ponto final.
David Matos
Apenas agradecendo pelo conteúdo e repostas dos outros muito motivadores.
Pessoalmente nunca estudei programação No meu dia a dia trabalho trablho com alguns programas como ArcGis, Corel Draw e outros, como usuário.
Pretendo agora aprender um pouco de análise de dados. Vou tentar seguir…
Abraaço e muita força.
Daniel
Muito obrigado!
Ótimo artigo, tem informações interessantes.
Eu optei por aprofundar em uma delas e depois iniciar na outra.
Sendo assim tem mais foco se juntando a comunidades e desafios específicos.
Bons estudos a todos!
Obrigado Matheus.
Atualmente com a grande quantidade de pacotes de análise de Dados para o Python, é melhor começar com esta linguagem, pois é mais fácil de aprender e tem uma abrangência genérica como linguagem de progamação, enquanto o R pode ser mais valioso quando se trata de grande quantidades de dados com grande enfoque estatístico. Sugiro começar com Python e depois evoluir para o R, e comparar ambas. E depois use aquela que resolva melhor o seu problema.
Particularmente, acho Python mais fácil de aprender e com uma menor curva de aprendizado. Conheço pessoas que não trocam “R” por nada e são entusiastas da ferramenta, mas decidi conhecer um pouco de ambas, ao invés de me deixar lavar pela preferência de terceiros. Optei em me aprofundar mais em Python , através do curso gratuito da DSA (Python Fundamentos Para Análise de Dados 3.0) e não estou me arrependendo, por ser um curso excelente.
Parabéns pelo artigo e obrigado por compartilhar seu conhecimento, David.
Elysiario Santos
Obrigado Elysiario.
Meu primeiro contato com as referidas linguagens foi na universidade, nesse caso com R. Como faço Eng. Agronômica, a maioria dos trabalhos são experimentais, e, portanto, requerem análise estatística. O R foi o indicado para tal, tive que aprender aos poucos, e com a ajuda de um amigo estatístico que já dominava a ferramenta, tornou-se mais fácil e atraente. Como já mencionaram, o fato de focarmos no resultado estatístico, gráficos, testes de hipótese etc, o R vai direto ao ponto, pois há muitos pacotes disponíveis e scripts prontos que agilizam o processo. Enfim, sou iniciante, e estou buscando aprender mais sobre ambas. Abs!