flowchart LR
A[R Environment] <-->|reticulate| B[Python Environment]
B --> C[pandas]
B --> D[numpy]
B --> E[scikit-learn]
A --> F[ggplot2]
A --> G[dplyr]
A --> H[tidyr]
Combinando o melhor de dois mundos
Fico feliz de construir aulas que podemos juntas(os) realizar a integração do R com outras linguagens e sistemas.
Aproveitem muito!!! Ahhh essa é a meguy, minha gatinha linda!
Todos os códigos da aula estão funcionais. Prontos para reproduzir.
R e PythonVantagens do R
Vantagens do Python
Reticulate permite executar código Python dentro do ambiente R.
documentaçãoflowchart LR
A[R Environment] <-->|reticulate| B[Python Environment]
B --> C[pandas]
B --> D[numpy]
B --> E[scikit-learn]
A --> F[ggplot2]
A --> G[dplyr]
A --> H[tidyr]
Opções de instalação:
Dica
Anote o caminho de instalação do Python para configuração posterior.
Note
O Quarto é independente do R e pode ser usado com Python, Julia e Observable.
Saída esperada: Informações sobre versão, caminho e pacotes disponíveis.
Se o R não detectar o Python automaticamente:
Warning
Use o caminho completo para o executável do Python.
Vantagem: Isolamento de dependências e evita conflitos.
Alternativa
Você também pode usar pip install no terminal.
Documentos .qmd permitem chunks de diferentes linguagens:
Resultado: O código Python executa diretamente no documento.
Útil para: pequenos scripts ou testes rápidos.
py$py$| Python | R |
|---|---|
dict |
list |
list |
vector |
tuple |
vector |
pandas.DataFrame |
data.frame |
numpy.ndarray |
matrix |
Análise de avaliações de café de diferentes países:
library(ggplot2)
library(dplyr)
# 10 países principais
grafico_cafe <- resumo_pais_R %>%
arrange(desc(total_cup_points)) %>%
slice_max(total_cup_points, n = 10) %>%
ggplot(aes(
x = reorder(country_of_origin, total_cup_points),
y = total_cup_points,
fill = country_of_origin)) +
geom_col(show.legend = FALSE) +
coord_flip()grafico_cafe +
labs(
title = "10 principais países - Pontuação média",
subtitle = "Dados processados em Python, visualização em R",
x = "País de origem",
y = "Pontuação média total",
caption = "Fonte: TidyTuesday | Coffee Ratings | Café com R") +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold"),
axis.text = element_text(color = "gray30"))
grafico_cafe| Operação | Python | R |
|---|---|---|
| Ler CSV | pd.read_csv() |
read.csv() ou read_csv() |
| Ler Excel | pd.read_excel() |
read_excel() |
| Ler JSON | pd.read_json() |
jsonlite::fromJSON() |
| Operação | Python | R |
|---|---|---|
| Primeiras linhas | df.head() |
head(df) |
| Últimas linhas | df.tail() |
tail(df) |
| Estrutura | df.info() |
str(df) |
| Resumo | df.describe() |
summary(df) |
| Operação | Python | R (dplyr) |
|---|---|---|
| Filtrar | df[df['col'] > 5] |
filter(df, col > 5) |
| Selecionar | df[['col1', 'col2']] |
select(df, col1, col2) |
| Criar coluna | df['nova'] = df['a'] + df['b'] |
mutate(df, nova = a + b) |
| Agrupar | df.groupby('grupo').mean() |
group_by(df, grupo) %>% summarise(mean()) |
| Operação | Python | R (dplyr) |
|---|---|---|
| Ordenar | df.sort_values('col') |
arrange(df, col) |
| Remover NA | df.dropna() |
drop_na(df) |
| Renomear | df.rename(columns={'old':'new'}) |
rename(df, new = old) |
projeto/
├── dados/
│ ├── raw/
│ └── processed/
├── scripts/
│ ├── 01_importacao.qmd
│ └── 02_analise.qmd
├── outputs/
│ ├── figuras/
│ └── tabelas/
└── requirements.txt
Python (requirements.txt):
pandas==2.0.0
numpy==1.24.0
matplotlib==3.7.0
R (no início do script):
renv para R e venv para Pythondata.table (R) ou polars (Python) para grandes volumesSolução:
Solução:
Solução:
Imagem: Allison Horst.
Continue praticando e explorando!
Esta apresentação é parte do projeto Café com R! É OPEN, USE, COMPARTILHE!
Fique por dentro das aulas, conteúdos, newsletter!
Que cada gole desperte uma nova ideia.
Que cada script abra uma nova conversa.
Que o Café com R, se torne um ponto de encontro nosso!

Jennifer Lopes | Café com R