Este relatório foi compilado em: 02/10/2025 11:31:57.
Introdução ao Polars
library(reticulate) #para usar o python no RStudio#garantir que o reticulate vai usar o Python 3.12 que está presente nos pcs do labuse_virtualenv("~/.virtualenvs/r-reticulate", required =TRUE)py_run_string("import polars as pl; print(pl.__version__)")
1.33.1
#instalar pacotes dentro desse Python, apenas se o chunk logo abaixo não funcionarpy_install("pip", pip =TRUE)
Using virtual environment "\\smb/ra212974/Documentos/.virtualenvs/r-reticulate" ...
#instalando os pacotes necessários do python#!pip install polars#!pip install fastexcel#!pip install pyarrow
import polars as pl #importando polarsimport fastexcel #importando fastexcel
#pl.read_csv serve para ler o dataset airports.csv, especificamente as colunas#IATA_CODE, CITY e STATEaeroportos = pl.read_csv("airports.csv", columns = ["IATA_CODE", "CITY", "STATE"])aeroportos.head(2) #mostra as duas primeiras linhas
shape: (2, 3)
IATA_CODE
CITY
STATE
str
str
str
"ABE"
"Allentown"
"PA"
"ABI"
"Abilene"
"TX"
#pl.read_excel serve para ler um dataset com extensão .xlsxwdi = pl.read_excel("WDIEXCEL.xlsx", sheet_name ="Country", columns = ["Short Name", "Region"])wdi.head(2)
#tirando os nulls em valor1df["valor1"].drop_nulls()
shape: (4,)
valor1
i64
10
15
10
25
df["valor1"].drop_nulls().mean()
15.0
#operando em colunasdf.select([ pl.col("valor1").mean().alias("media_v1"), pl.col("valor2").mean()])
shape: (1, 2)
media_v1
valor2
f64
f64
15.0
18.333333
#Quais são as médias da variável valor1 e o valor mínimo da variável valor2 para cada um dos grupos definidos por grupo?df.group_by("grupo").agg([ pl.col("valor1").mean().alias("media_valor1"), pl.col("valor2").min().alias("min_valor2")]).sort("grupo")
shape: (3, 3)
grupo
media_valor1
min_valor2
str
f64
i64
"A"
12.5
5
"B"
10.0
20
"C"
25.0
null
#Calcule o percentual de vôos das cias. aéreas “AA” e “DL” que atrasaram pelo menos 30 minutos nas chegadas aos aeroportos “SEA”, “MIA” e “BWI”.voos = pl.read_csv("flights.csv", columns = ["AIRLINE", "ARRIVAL_DELAY", "DESTINATION_AIRPORT"], schema_overrides = {"AIRLINE": pl.Utf8,"ARRIVAL_DELAY": pl.Int32,"DESTINATION_AIRPORT": pl.Utf8})voos.shape
(5819079, 3)
voos.head(3)
shape: (3, 3)
AIRLINE
DESTINATION_AIRPORT
ARRIVAL_DELAY
str
str
i32
"AS"
"SEA"
-22
"AA"
"PBI"
-9
"US"
"CLT"
5
#Calcule o percentual de vôos das cias. aéreas “AA” e “DL” que atrasaram pelo menos 30 minutos nas chegadas aos aeroportos “SEA”, “MIA” e “BWI”.resultado = ( voos.drop_nulls(["AIRLINE", "DESTINATION_AIRPORT", "ARRIVAL_DELAY"]) .filter( pl.col("AIRLINE").is_in(["AA", "DL"]) & pl.col("DESTINATION_AIRPORT").is_in(["SEA", "MIA", "BWI"]) ) .group_by(["AIRLINE", "DESTINATION_AIRPORT"]) .agg([ (pl.col("ARRIVAL_DELAY") >30).mean().alias("atraso_medio") ]))resultado.sort("atraso_medio")
shape: (6, 3)
AIRLINE
DESTINATION_AIRPORT
atraso_medio
str
str
f64
"DL"
"BWI"
0.069455
"DL"
"SEA"
0.072967
"DL"
"MIA"
0.090467
"AA"
"MIA"
0.117894
"AA"
"SEA"
0.124212
"AA"
"BWI"
0.127523
Dados Relacionais
#dados clientes#criando um data frameclientes = pl.DataFrame({"cliente_id": [1, 2, 3, 4],"nome": ["Ana", "Bruno", "Clara", "Daniel"]})print(clientes)
shape: (4, 2)
┌────────────┬────────┐
│ cliente_id ┆ nome │
│ --- ┆ --- │
│ i64 ┆ str │
╞════════════╪════════╡
│ 1 ┆ Ana │
│ 2 ┆ Bruno │
│ 3 ┆ Clara │
│ 4 ┆ Daniel │
└────────────┴────────┘
#Retorna apenas as linhas que têm correspondências (de chaves) nas duas tabelas.res_ij = clientes.join(pedidos, on="cliente_id", how="inner")print(res_ij)
#Retorna todas as linhas da tabela à esquerda [direita] e as correspondentes da direita [esquerda] (se houver).res_lj = clientes.join(pedidos, on="cliente_id", how="left")print(res_lj)
#Retorna todas as linhas da tabela à esquerda [direita] e as correspondentes da direita [esquerda] (se houver).res_rj = clientes.join(pedidos, on="cliente_id", how="right")print(res_rj)