Curso
Ciência de dados já faz parte do dia a dia de praticamente todos os setores. Do banco ao seguro, passando pela saúde, uma quantidade enorme de dados é gerada a cada segundo. Por isso, tornou-se essencial saber aproveitar esse volume para gerar insights acionáveis e colocá-los em prática. Hoje, há várias ferramentas em forma de linguagens de programação disponíveis no mercado. Entre elas, Python e R parecem estar liderando a corrida.
Tanto Python quanto R são amplamente usados no mundo da ciência de dados. As duas linguagens oferecem uma grande variedade de ferramentas com um conjunto excelente de funções, extremamente adequadas para esse contexto. Enquanto Python é uma linguagem de propósito geral usada em diversos tipos de aplicações, R é uma linguagem e um ambiente voltados para computação estatística e gráficos.
uma visão geral do ecossistema de Python e R
Vamos dar uma olhada nos principais aspectos dessas linguagens e no que elas têm de bom — e no que não é tão bom assim.
linguagem de programação Python

Python é uma linguagem de programação interpretada, de alto nível e de propósito geral. Criada e lançada em 1991 por Guido van Rossum, desde então ganhou enorme popularidade em várias áreas, inclusive ciência de dados. Hoje, Python está entre as linguagens que mais crescem no mundo.
Alguns motivos para tanta popularidade:
- Linguagem orientada a objetos
- Propósito geral
- Comunidade incrivelmente ativa
- Simples, fácil de entender e de aprender
- Pacotes eficientes como pandas, NumPy e scikit-learn, que a tornam uma excelente escolha para atividades de machine learning.
Por outro lado, quando o assunto é computação estatística, Python fica atrás e não tem tantos pacotes especializados quanto seu contraparte, o R.
linguagem de programação R

R é essencialmente um software para computação estatística e gráficos, mantido pela R Foundation for Statistical Computing. Surgiu em agosto de 1993, com a primeira versão estável em 1995, e desde então é amplamente utilizado por estatísticos e profissionais de dados para análises estatísticas.
Alguns recursos que fazem o R se destacar:
- Pacotes para praticamente qualquer aplicação estatística que você imaginar. O CRAN hoje hospeda mais de 10 mil pacotes.
- Bibliotecas de visualização excelentes, como o ggplot2.
- Capaz de análises completas com pacotes nativos.
Mas há um porém: em desempenho, o R não é a linguagem mais rápida e pode consumir bastante memória ao lidar com conjuntos de dados muito grandes.
usando Python e R juntos
R e Python são ferramentas excelentes por si só, mas muitas vezes são vistos como rivais. Em vez de encarar dessa forma, vale aproveitar o que há de melhor em cada uma para tirar o máximo dos dois mundos.
Na comunidade de ciência de dados, é comum pessoas trabalharem com apenas uma linguagem. Há quem use tanto Python quanto R, mas é minoria. Por outro lado, muita gente que é fiel a uma linguagem sente falta de recursos da outra. Por exemplo, usuários de R às vezes desejam capacidades nativas de orientação a objetos do Python; já alguns usuários de Python gostariam de ter à mão toda a variedade de distribuições estatísticas disponível no R.
A figura abaixo mostra os resultados de uma pesquisa conduzida pela Red Monk no terceiro trimestre de 2018. Os resultados, com base na popularidade das linguagens no Stack Overflow e no GitHub, deixam claro que R e Python têm ótima avaliação quando o assunto é ciência de dados. Portanto, não há motivo para não trabalharmos com ambas no mesmo projeto. Nosso objetivo final deve ser fazer análises melhores e extrair insights de qualidade — a escolha da linguagem não deve ser um obstáculo para isso.

como usar Python e R no mesmo projeto?
Quando precisamos embutir SQL em um script de R ou Python, não pensamos duas vezes. Então, por que não usar o poder estatístico do R junto com os recursos de programação do Python do mesmo jeito? Sim, isso é possível — e existem bibliotecas que fazem essa ponte muito bem.
Básicamente, há duas abordagens para usar Python e R lado a lado em um único projeto.
R dentro do Python
Ou seja, chamar funções do R dentro de um script em Python. Algumas bibliotecas criadas para isso são:
1. PypeR
O PypeR oferece uma forma simples de acessar o R a partir do Python por meio de pipes. Ele também está no Python Package Index, o que facilita a instalação. O PypeR é especialmente útil quando não há necessidade de transferências interativas frequentes de dados entre Python e R. Ao executar o R via pipe, o programa em Python ganha flexibilidade no controle de subprocessos, controle de memória e portabilidade entre os sistemas operacionais mais populares, incluindo Windows, GNU/Linux e macOS.

Convenções para conversão de objetos Python em objetos R
2. pyRserve
pyRserve é outra biblioteca criada com esse objetivo. Ela usa o Rserve como gateway de conexão RPC. Por meio dessa conexão, é possível definir variáveis no R a partir do Python e também chamar funções do R remotamente. Objetos do R são expostos como instâncias de classes implementadas em Python, com funções do R como métodos vinculados a esses objetos em diversos casos.
3. rpy2
A biblioteca rpy2 é usada com mais frequência do que as duas anteriores. O motivo é que o rpy2 está em desenvolvimento ativo e acelerado. Ele executa o R incorporado em um processo Python. Cria uma estrutura capaz de traduzir objetos Python em objetos R, passá-los para funções do R e converter a saída do R de volta em objetos Python.

Uma vantagem de usar R dentro do Python é poder aproveitar com facilidade pacotes incríveis do R, como ggplot2, tidyr, dplyr e outros, diretamente no Python. Como exemplo, veja como é simples usar o ggplot2 para mapeamento em Python.
- Gráfico básico

https://rpy2.github.io/doc/latest/html/graphics.html#plot

- Geometria

https://rpy2.github.io/doc/latest/html/graphics.html#geometry

recursos do rpy2
Para um review aprofundado e todos os detalhes de instalação e uso do rpy2, vale conferir estes recursos:
- documentação oficial do rpy2
- RPy2: Combining the Power of R + Python for Data Science
- Accessing R from Python using RPy2
Python dentro do R
Também é possível executar scripts em Python a partir do R usando uma das alternativas abaixo:
1. rJython
Esse pacote implementa uma interface com Python via Jython. A ideia é permitir que outros pacotes incorporem código Python junto com R.
2. rPython
rPython é outro pacote que permite ao R chamar o Python. Com ele, é possível executar código Python, fazer chamadas de função, atribuir e recuperar variáveis etc., tudo a partir do R.
3. SnakeCharmR
SnakeCharmR é uma versão modernizada do rPython. É um fork do ‘rPython’ que usa ‘jsonlite’ e traz várias melhorias em relação ao original.
4. PythonInR
PythonInR facilita o acesso ao Python a partir do R, oferecendo funções para interagir com o Python dentro do R.
5. reticulate
O pacote reticulate oferece um conjunto abrangente de ferramentas para interoperabilidade entre Python e R. Entre as alternativas acima, esta é a mais usada, principalmente por estar em desenvolvimento ativo pela RStudio.
Reticulate incorpora uma sessão Python dentro da sessão R, possibilitando uma interoperabilidade contínua e de alto desempenho. O pacote permite reticular código Python no R, criando um novo tipo de projeto que entrelaça as duas linguagens.

O pacote reticulate oferece:
- Chamadas ao Python a partir do R de várias formas, incluindo R Markdown, execução de scripts Python, importação de módulos Python e uso interativo do Python dentro de uma sessão R.
- Tradução entre objetos R e Python (por exemplo, entre data frames do R e do pandas, ou entre matrizes do R e arrays do NumPy).
- Vinculação flexível a diferentes versões do Python, incluindo virtualenvs e ambientes Conda.
recursos do reticulate
Alguns ótimos materiais sobre o pacote reticulate:
- A documentação é bem completa e traz vários exemplos e casos de uso para você começar.
- https://longhowlam.wordpress.com/2017/04/10/test-driving-python-integration-in-r-using-the-reticulate-package/
- SNAKES IN A PACKAGE: COMBINING PYTHON AND R WITH RETICULATE
conclusão
R e Python são ferramentas excelentes e, em muitos casos, suficientes para tocar tarefas de ciência de dados do zero ao fim. Você pode nem precisar usar as duas no mesmo projeto. Ainda assim, conhecer ambas ajuda bastante — principalmente por dar a opção de trabalhar em outro ambiente quando for mais conveniente. Como se diz, o foco deve estar nas habilidades, não nas ferramentas. Portanto, vale manter a mente aberta para aprender novas ferramentas e linguagens se elas ajudarem a resolver o problema com mais facilidade.
Se você quer começar em alguma das linguagens, faça os cursos da DataCamp: Introduction to Python ou Introduction to R. E confira também nosso Python Tutorial for Beginners.
referências:
- Interfacing R and Python — Andrew Collier
- From ‘R vs Python’ to ‘R and Python’
