R vs Python – Uma Análise Desapaixonada

R vs Python – Uma Análise Desapaixonada

Nos últimos tempos, parece que nós desenvolvemos um gosto especial em transformar alguns tópicos do cotidiano em algo como uma briga de torcida, como a famosa dicotomia “Fla-Flu”. Esse termo é referente a grande rivalidade histórica dentre os torcedores do Flamengo e do Fluminense. Similar ao que vemos também com as seleções do Brasil e Argentina.

Mais recentemente, intensificamos essa disputa em outros ambientes: esquerda vs direita, PS4 vs Xbox, Linux vs Windows, IPhone vs Android, feijão por cima do arroz vs arroz por cima do feijão – a lista é longa. E muitas vezes, por incrível que pareça, essas discussões vão para um patamar não muito saudável.

Na nossa área, infelizmente, não é diferente. Na ciência de dados há o persistente debate: qual é a melhor linguagem de programação para se utilizar, R ou Python?

Nesse texto vamos tentar apresentar uma visão objetiva e atual desse tema. Aqui quem vos escreve é alguém que possui cerca de 10 anos de experiência programando em R e 6 anos programando em Python. E não, não teremos uma conclusão “em cima do muro”, como é bastante comum por aí.

Background Histórico

Python nasceu em 1994 pelas mãos de Guido von Rossum, a versão 2.0 veio nos anos 2000 e a mais recente versão 3.0 chegou ao público em 2008. O nome da linguagem nada tem a ver com a cobra de mesmo nome, mas sim com uma homenagem do criador ao programa de TV “Monty Python”.

O R teve seu primeiro release em 1995, mas a versão 1.0 só veio em 2000. A versão 2.0 chegou em 2004 e a versão 3.0 veio em 2013. No final de abril desse ano (2020), saiu a versão 4.0. Seu nome veio das iniciais de seus criadores, Ross Ihaka e Robert Gentleman.

R sempre foi referência no campo da análise de dados. Python tomou a frente aproximadamente em 2016/2017, conforme ilustra o gráfico abaixo

Veja que de um ano para o outro as posições de uso em R e Python praticamente se inverteram, deixando Python na liderança.

Já em 2019, em nova pesquisa com mais de 1800 participantes realizada pelo KDnuggets, vemos Python tomar uma dianteira mais aguda em relação ao R, conforme podemos ver na seguinte figura

Em outra pesquisa, dessa vez realizada com quase 19000 participantes da plataforma Kaggle, vemos Python com uma discrepância mais acentuada em relação as demais linguagens, sendo utilizada por 83% dos usuários. A linguagem de banco de dados SQL ficou em segundo lugar com 44% e R em terceiro, com 36% afirmando terem utilizado em bases regulares. Veja as colocações das demais linguagens no gráfico abaixo

Isso deixa bem evidenciado que a linguagem Python, apesar de qualquer coisa, é a preferida pela maioria dos usuários hoje em dia. No entanto, isso não quer dizer que uma linguagem é superior a outra ou vice-versa.

Para isso, vamos tentar explorar alguns argumentos mais objetivos.

O que Python faz que R não faz? O que R faz que Python não faz?

No que se refere ao conceitos básicos de Data Science, praticamente tudo que uma linguagem pode fazer, a outra também pode. No entanto isso não significa que todos os conceitos, de toda ciência produzida na área, estão bem implementados em ambos.

Python, por ser uma linguagem de propósito geral, oferece mais ferramentas para criar programas relacionados a Data Science com integração Web. Bibliotecas famosas como Django e Flask são os grandes destaques nesse âmbito.

Em relação a Deep Learning, a maioria das funções são desenvolvidas primeiro em Python. E, aliás, na minha opinião, essa é a grande razão pela qual o Python tomou a dianteira em utilização em Ciência de Dados.

Grandes empresas, como a Google, produziram ferramentas como o Tensorflow, em meados de 2015, e foi um grande diferencial para a comunidade. Essa biblioteca permitiu a criação, experimentação e utilização de modelos de Deep Learning em larga escala mundo afora.

Em contrapartida, a linguagem R foi feita com o propósito de resolver demandas relacionadas a análise de dados. Em particular, para resolver problemas do mundo da Estatística. E R é muito bom nisso. Tanto as funções do R-base, quanto as oferecidas pelo framework Tidyverse, permitem ao usuário tratar, manipular e visualizar gráficos de maneira muito fácil, direta e simples.

Algumas bibliotecas famosas do R ainda parecem não ter um dual muito próximo em Python, que é o caso do pacote GAMLSS. Tal pacote permite o ajuste de modelos tradicionais da estatística de forma bastante conveniente, com inúmeras distribuições de probabilidades implementadas, até as mais raras.

Em resumo, em R você vai encontrar primeiro implementações de conceitos novos e mais particulares do mundo da Estatística.

Em Python, você vai encontrar primeiro implementações mais novas do mundo de Machine e Deep Learning.

Não que Machine Learning não seja uma área da Estatística, mas isso é polêmica para outro dia.

E isso tudo implica que você vai encontrar uma comunidade maior trabalhando nesses conceitos em que as linguagens se destacam, o que significa ter mais material de apoio disponível.

Comparações

Na tabela abaixo, eu atribuo notas (mania de professor) a ambas linguagens em relação a diversos quesitos. São notas subjetivas, baseado nas minhas experiências e pesquisas em relação as linguagens.

Alguns comentários sobre a tabela acima:

  1. Facilidade de aprendizado: na contramão de muitas referências, eu considero R mais fácil para um leigo do que Python, apesar das duas serem realmente muito simples para um programador de primeira viagem. R tem funções mais intuitivas e alguns detalhes que não requerem maiores explicações, como o fato da indexação começar no 1, utilizar intervalos fechados como default (python usa semi-abertos) e maior parte das funções necessárias para análise de dados já pertencer ao R-base, não necessitando instalação de bibliotecas.
  2. Manipulação de dados: R é mais straight-forward, eu considero a sintaxe de manipulação oferecida pelo pacote dplyr superior ao pandas do Python, apesar dessa última ser uma biblioteca de excelente qualidade e muito completa.
  3. Machine Learning: como já mencionado, esse é um dos pontos fortes do Python, principalmente em Deep Learning.
  4. Visualização de dados: empate técnico, Python tem o matplotlib que se contrasta com os gráficos básicos do R e tem também o Seaborn, que produz gráficos tão bonitos quanto o ggplot2, natural do R.
  5. IDE’s: talvez a única coisa que eu sinta falta em Python é de uma IDE tão boa como o RStudio é para o R. Spyder seria a mais próxima nessa questão e, pra mim, tem muito o que evoluir pra chegar no que é o RStudio. Embora seja possível usar python no RStudio, não é a mesma experiência.
  6. Comunidade: de fato, há muito mais suporte de comunidade para Python do que para R, no geral. Isso se dá por conta da própria popularidade do Python na área. Veja, por exemplo, quantos notebooks em Python você vê no Kaggle em relação aos escritos em R.
  7. Velocidade: de acordo com pesquisas, Python tem ligeira vantagem no quesito velocidade. Depende muito do cenário, do que se está fazendo e da maneira que foi programada a atividade na comparação. Para todos os fins, o diferencial é mínimo. Pra quem quer mais velocidade, terá que fugir de ambas linguagens.
  8. Empregos: muito mais vagas pedem Python do que R hoje dia, pelo menos no Brasil.
  9. Utilização comercial: Python possui licenças mais permissivas para implementação da linguagem em produtos com fins comerciais do R.
  10. Nuvem: a Google oferece o Google Colaboratory para se trabalhar em Python, enquanto que o RStudio oferece o RStudio Cloud para se trabalhar com R. Ambas ferramentas fantásticas e gratuitas. No entanto, o Colab oferece GPUs gratuitas também, então por essa razão Python ganha nesse quesito. Há outras opções além dessas, principalmente em Python. Aliás, mais recentemente descobri que agora também já é possível utilizar R no Google Colab, basta acessar a partir desse link.

Conclusão

Não é atoa que Python tem tomado a dianteira no mundo da análise de dados, tanto descritiva quanto preditiva. Seus avanços em pontos muito importantes como Machine Learning, empregos e utilização comercial deixam claro que é uma linguagem impossível de se ignorar nos dias de hoje. Eu diria que quem sabe R, precisa se complementar e conhecer Python, no entanto, a reciproca não é verdadeira.

Se você está começando e já é íntimo com alguma linguagem de programação, Python é o mais indicado para você. Se está começando, nunca programou na vida e não tem problema nenhum em aprender mais de uma linguagem com o passar do tempo, começar com R não é uma má escolha. Se tiver que escolher só uma, escolha Python.

Pode-se dizer que Python é a linguagem em que se é falado Data Science hoje em dia. Python está para o inglês assim como as demais linguagens de programação estão para as demais linguagens faladas mundo afora.

No entanto, eu gostaria de frisar aqui que não se deve criar paixão por linguagem de programação, isto é, paixão por ferramentas. Como pesquisador ou como analista de dados em geral, nossa paixão deve ser pelos problemas. No dia em que R ou Python não for a linguagem mais conveniente para resolver os seus problemas, esteja preparados para descartá-los e aceitar os novos meios.

Quem foca numa linguagem, achando que vai resolver tudo utilizando somente ela, está simplesmente abrindo mão de outras ferramentas que, dependendo do cenário, podem ser mais adequadas. Seria como um construtor ter paixão por um martelo em específico e se recusar utilizar outros. Já viu isso por ai?

Liberte sua mente. Quem já conhece uma das linguagens, eu garanto que, em umas 20 horas de estudo (meia semana, ou 2 dias bem aproveitados), consegue aprender todo o básico referente a outra.

Por ser usuário de ambas linguagens, consigo extrair o melhor dos dois mundos. Tenho scripts que muitas vezes utilizam ambas linguagens. E tenha em mente sempre uma coisa: a melhor linguagem mesmo é aquela que resolve o seu problema, e resolve de maneira plena e em tempo mínimo, seja esse tempo de implementação ou de execução.

E para você? Qual é a melhor linguagem? Você tem um martelinho de estimação? Quais vantagens você vê numa linguagem que não vê na outra? Você vive esse “Fla-Flu” ou está livre pra utilizar o que bem entender quando precisar? 


Fontes

https://www.kdnuggets.com/2017/08/python-overtakes-r-leader-analytics-data-science.html

https://www.kdnuggets.com/2019/05/poll-top-data-science-machine-learning-platforms.html

https://towardsdatascience.com/programming-languages-for-data-scientists-afde2eaf5cc5

https://www.datasciencecoffee.com/2020-python-vs-r/

https://www.statista.com/chart/16567/popular-programming-languages/

https://www.r-bloggers.com/how-gpl-makes-me-leave-r-for-python/

https://br.stanleytools.global/pt-br/article/descubra-o-uso-ideal-para-cada-tipo-de-martelo

Tags: | | | | | |

Sobre o Autor

Ricardo Rocha
Ricardo Rocha

Olá! Atualmente, sou docente do magistério superior na Universidade Federal da Bahia. Atuo na área de Estatística Computacional junto ao Departamento de Estatística do Instituto de Matemática e Estatística da UFBA. Aqui na FLAI, atuo como colaborador na produção de conteúdos gratuitos. Fique a vontade para entrar em contato, você pode utilizar qualquer uma das redes sociais abaixo!

6 Comentários

  1. Parabéns pelo Artigo, muito bem escrito e me ajudou a ter um panorama geral dos “martelos” disponíveis.

  2. Ótimo artigo, parabéns! Eu comecei com Python e depois aprendi o necessário de R para fazer algumas análises rápidas. Confesso que prefiro ggplot2 do R do que o matplotlib do Python, e acho a sintaxe do seaborn do Python meio complexa às vezes. Mas em geral, Python é mais versátil eu acho a melhor escolha.

  3. Excelente, Ricardo…

    “Quando a única ferramenta que você tem é um martelo, todo problema você vai considerar um prego.”

    🙂

  4. Olá. Meu nome é Juraci Araujo. Sou Engenheiro mecânico. Atualmente sou professor efetivo do IFES. Tenho muito interesse e estou a cada dia mais facinado com o universo da análise de dados e do que ela pode fazer, principalmente no que tange as tomadas de decisão na área corporativa. No entanto, sou inexperiente nesta área. Você poderia me indicar referências para eu aprender a programar em python e ou R. Um abraço, Juraci


Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *