Use Tidyverse
Tidyverse é uma coleção de pacotes R que os cientistas de dados comumente usam em análises de dados diárias. Inclui pacotes para importação de dados (readr
), visualização de dados (ggplot2
), manipulação de dados (dplyr
, tidyr
), programação funcional (purrr
), e construção de modelos (tidymodels
) etc. Os pacotes são projetados para trabalhar juntos perfeitamente tidyverse
e seguir um conjunto consistente de princípios de design.
O Microsoft Fabric distribui a versão estável mais recente do com cada versão de tempo de tidyverse
execução. Importe e comece a usar seus pacotes R familiares.
Pré-requisitos
Obtenha uma assinatura do Microsoft Fabric. Ou inscreva-se para uma avaliação gratuita do Microsoft Fabric.
Entre no Microsoft Fabric.
Use o seletor de experiência no lado esquerdo da sua página inicial para alternar para a experiência Synapse Data Science.
Abra ou crie um bloco de notas. Para saber como, consulte Como usar blocos de anotações do Microsoft Fabric.
Defina a opção de idioma como SparkR (R) para alterar o idioma principal.
Ligue o seu bloco de notas a uma casa no lago. No lado esquerdo, selecione Adicionar para adicionar uma casa de lago existente ou para criar uma casa de lago.
Carregar tidyverse
# load tidyverse
library(tidyverse)
Importação de dados
readr
é um pacote R que fornece ferramentas para ler arquivos de dados retangulares, como CSV, TSV e arquivos de largura fixa. readr
fornece uma maneira rápida e amigável de ler arquivos de dados retangulares, como o fornecimento de funções read_csv()
e read_tsv()
para ler arquivos CSV e TSV, respectivamente.
Vamos primeiro criar um data.frame R, escrevê-lo no lakehouse usando readr::write_csv()
e lê-lo de volta com readr::read_csv()
.
Nota
Para acessar os arquivos do Lakehouse usando readr
o , você precisa usar o caminho da API de arquivo. No Lakehouse explorer, clique com o botão direito do mouse no arquivo ou pasta que você deseja acessar e copie seu caminho da API de arquivo do menu contextual.
# create an R data frame
set.seed(1)
stocks <- data.frame(
time = as.Date('2009-01-01') + 0:9,
X = rnorm(10, 20, 1),
Y = rnorm(10, 20, 2),
Z = rnorm(10, 20, 4)
)
stocks
Em seguida, vamos gravar os dados no lakehouse usando o caminho da API de arquivo.
# write data to lakehouse using the File API path
temp_csv_api <- "/lakehouse/default/Files/stocks.csv"
readr::write_csv(stocks,temp_csv_api)
Leia os dados da lakehouse.
# read data from lakehouse using the File API path
stocks_readr <- readr::read_csv(temp_csv_api)
# show the content of the R date.frame
head(stocks_readr)
Arrumação de dados
tidyr
é um pacote R que fornece ferramentas para trabalhar com dados confusos. As principais funções são tidyr
projetadas para ajudá-lo a remodelar os dados em um formato organizado. Os dados arrumados têm uma estrutura específica onde cada variável é uma coluna e cada observação é uma linha, o que facilita o trabalho com dados em R e outras ferramentas.
Por exemplo, a gather()
função in tidyr
pode ser usada para converter dados amplos em dados longos. Eis um exemplo:
# convert the stock data into longer data
library(tidyr)
stocksL <- gather(data = stocks, key = stock, value = price, X, Y, Z)
stocksL
Programação funcional
purrr
é um pacote R que melhora o kit de ferramentas de programação funcional do R, fornecendo um conjunto completo e consistente de ferramentas para trabalhar com funções e vetores. O melhor lugar para começar purrr
é a família de funções que permitem substituir muitos loops por código que é mais sucinto e mais fácil de map()
ler. Aqui está um exemplo de uso map()
para aplicar uma função a cada elemento de uma lista:
# double the stock values using purrr
library(purrr)
stocks_double = map(stocks %>% select_if(is.numeric), ~.x*2)
stocks_double
Manipulação de dados
dplyr
é um pacote R que fornece um conjunto consistente de verbos que ajudam a resolver os problemas mais comuns de manipulação de dados, como selecionar variáveis com base nos nomes, selecionar casos com base nos valores, reduzir vários valores a um único resumo e alterar a ordem das linhas, etc. Eis alguns exemplos:
# pick variables based on their names using select()
stocks_value <- stocks %>% select(X:Z)
stocks_value
# pick cases based on their values using filter()
filter(stocks_value, X >20)
# add new variables that are functions of existing variables using mutate()
library(lubridate)
stocks_wday <- stocks %>%
select(time:Z) %>%
mutate(
weekday = wday(time)
)
stocks_wday
# change the ordering of the rows using arrange()
arrange(stocks_wday, weekday)
# reduce multiple values down to a single summary using summarise()
stocks_wday %>%
group_by(weekday) %>%
summarize(meanX = mean(X), n= n())
Visualização de dados
ggplot2
é um pacote R para criar gráficos declarativamente, com base em A Gramática dos Gráficos. Você fornece os dados, diz ggplot2
como mapear variáveis para estética, quais primitivos gráficos usar e cuida dos detalhes. Seguem-se alguns exemplos:
# draw a chart with points and lines all in one
ggplot(stocksL, aes(x=time, y=price, colour = stock)) +
geom_point()+
geom_line()
# draw a boxplot
ggplot(stocksL, aes(x=time, y=price, colour = stock)) +
geom_boxplot()
Construção de modelos
A tidymodels
estrutura é uma coleção de pacotes para modelagem e aprendizado de máquina usando tidyverse
princípios. Ele abrange uma lista de pacotes principais para uma ampla variedade de tarefas de construção de modelo, como rsample
para divisão de amostras de conjunto de dados de trem/teste, parsnip
para especificação de modelo, recipes
para pré-processamento de dados, workflows
para fluxos de trabalho de modelagem, tune
para ajuste de hiperparâmetros, yardstick
para avaliação de modelo, broom
para tiding de saídas de modelo e dials
para gerenciar parâmetros de ajuste. Você pode saber mais sobre os pacotes visitando o site da tidymodels. Aqui está um exemplo de construção de um modelo de regressão linear para prever as milhas por galão (mpg) de um carro com base em seu peso (wt):
# look at the relationship between the miles per gallon (mpg) of a car and its weight (wt)
ggplot(mtcars, aes(wt,mpg))+
geom_point()
A partir do gráfico de dispersão, a relação parece aproximadamente linear e a variância parece constante. Vamos tentar modelar isso usando regressão linear.
library(tidymodels)
# split test and training dataset
set.seed(123)
split <- initial_split(mtcars, prop = 0.7, strata = "cyl")
train <- training(split)
test <- testing(split)
# config the linear regression model
lm_spec <- linear_reg() %>%
set_engine("lm") %>%
set_mode("regression")
# build the model
lm_fit <- lm_spec %>%
fit(mpg ~ wt, data = train)
tidy(lm_fit)
Aplique o modelo de regressão linear para prever no conjunto de dados de teste.
# using the lm model to predict on test dataset
predictions <- predict(lm_fit, test)
predictions
Vamos dar uma olhada no resultado do modelo. Podemos desenhar o modelo como um gráfico de linhas e os dados de verdade do terreno de teste como pontos no mesmo gráfico. O modelo parece bom.
# draw the model as a line chart and the test data groundtruth as points
lm_aug <- augment(lm_fit, test)
ggplot(lm_aug, aes(x = wt, y = mpg)) +
geom_point(size=2,color="grey70") +
geom_abline(intercept = lm_fit$fit$coefficients[1], slope = lm_fit$fit$coefficients[2], color = "blue")