Abstract
Projeto simples sobre análise exploratória# Como fazer uma análise exploratória
# completa no R | Caso real
# FASES DOS PROJETOS DE CIÊNCIA DE DADOS
# -> CAPTURA DOS DADOS
# -> ANÁLISE EXPLORATÓRIA
# -> LIMPAR OS DADOS
# -> CRIAR O MODELO/ MACHINE LEARNING / TESTES ESTATÍSTICOS
# -> COMUNICAÇÃO / VISUALIZAÇÃO DE DADOS
# 2 PRINCIPAIS MOTIVOS - ANÁLISE EXPLORATÓRIA
# 1 - CONHECER OS SEUS DADOS
# 2 - VALIDAR OS SEUS DADOS
library(readr)
aptos_bsb <- read_delim("aptos_bsb.txt",
"\t", escape_double = FALSE, col_types = cols(data = col_date(format = "%d/%m/%Y")),
trim_ws = TRUE)
### DEFINIR SUAS PERGUNTAS
# QUAL O BAIRRO MAIS CARO DE BRASÍLIA?
# EXISTE DIFERENÇA ENTRE OS PREÇOS DAS IMOBILIÁRIAS?
# QUAL IMOBILIÁRIA DOMINA O MERCADO?
# QUAL O PREÇO MÉDIO DE UM APARTAMENTO DE X QUARTOS NO BAIRRO Y
# QUAL O VALOR DO M2 NO BAIRRO Z?
# ESTRUTURA DO CONJUNTO DE DADOS
str(aptos_bsb)
## tibble [90,259 x 14] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ uf : chr [1:90259] "df" "df" "df" "df" ...
## $ cidade : chr [1:90259] "brasilia" "brasilia" "brasilia" "brasilia" ...
## $ tipo : chr [1:90259] "apartamento" "apartamento" "apartamento" "apartamento" ...
## $ negocio : chr [1:90259] "venda" "venda" "venda" "venda" ...
## $ bairro : chr [1:90259] "asa-norte" "asa-norte" "asa-norte" "asa-norte" ...
## $ imob : chr [1:90259] "LYBERTY BRASILIA IMÓVEIS" "LYBERTY BRASILIA IMÓVEIS" "CONCEITO INTELIGÊNCIA IMOBILIÁRIA S A" "ABA IMÓVEIS" ...
## $ local : chr [1:90259] "SHN 05 ATHOS BULCÃO * LINDO APTO * POOL *" "SETOR SHTN THE SUN*MOBILIADO*NASCENTE*2 VGS*RESORT*DESOCUPADO" "SGAN 915 COBERTURA PARQUE NORTE MELHOR M² DA ASA NORTE" "SGAN 912 PARK VILLE" ...
## $ quartos : chr [1:90259] "1" "1" "1" "1" ...
## $ suites : num [1:90259] 1 1 1 0 0 1 0 0 1 1 ...
## $ garagens: num [1:90259] 1 2 1 1 1 0 1 0 1 1 ...
## $ preco : chr [1:90259] "450000" "360000" "234476" "230000" ...
## $ valorm2 : num [1:90259] 15000 11613 8291 8519 10000 ...
## $ m2 : num [1:90259] 30 31 28 27 53 53 34 42 35 37 ...
## $ data : Date[1:90259], format: "2016-04-27" "2016-06-06" ...
## - attr(*, "spec")=
## .. cols(
## .. uf = col_character(),
## .. cidade = col_character(),
## .. tipo = col_character(),
## .. negocio = col_character(),
## .. bairro = col_character(),
## .. imob = col_character(),
## .. local = col_character(),
## .. quartos = col_character(),
## .. suites = col_double(),
## .. garagens = col_double(),
## .. preco = col_character(),
## .. valorm2 = col_double(),
## .. m2 = col_double(),
## .. data = col_date(format = "%d/%m/%Y")
## .. )
#cabeçalho
head(aptos_bsb)
## # A tibble: 6 x 14
## uf cidade tipo negocio bairro imob local quartos suites garagens preco
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <chr>
## 1 df brasi~ apar~ venda asa-n~ LYBE~ SHN ~ 1 1 1 4500~
## 2 df brasi~ apar~ venda asa-n~ LYBE~ SETO~ 1 1 2 3600~
## 3 df brasi~ apar~ venda asa-n~ CONC~ SGAN~ 1 1 1 2344~
## 4 df brasi~ apar~ venda asa-n~ ABA ~ SGAN~ 1 0 1 2300~
## 5 df brasi~ apar~ venda asa-n~ COEM~ SETO~ 1 0 1 5300~
## 6 df brasi~ apar~ venda asa-n~ RE/M~ SETO~ 1 1 0 5200~
## # ... with 3 more variables: valorm2 <dbl>, m2 <dbl>, data <date>
#rodapé
tail(aptos_bsb)
## # A tibble: 6 x 14
## uf cidade tipo negocio bairro imob local quartos suites garagens preco
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <chr>
## 1 df brasi~ apar~ aluguel sudoe~ LEOP~ CLSW~ 2 0 0 1100
## 2 df brasi~ apar~ aluguel sudoe~ LEOP~ CLSW~ 2 0 0 1000
## 3 df brasi~ apar~ aluguel sudoe~ ELO ~ SQSW~ 2 1 1 2800
## 4 df brasi~ apar~ aluguel sudoe~ CASA~ QRSW~ 2 0 0 1650
## 5 df brasi~ apar~ aluguel sudoe~ PINH~ QRSW~ 2 0 0 1600
## 6 df brasi~ apar~ aluguel sudoe~ CRIS~ QRSW~ 2 0 0 1220
## # ... with 3 more variables: valorm2 <dbl>, m2 <dbl>, data <date>
# Estatísticas descritivas
summary(aptos_bsb)
## uf cidade tipo negocio
## Length:90259 Length:90259 Length:90259 Length:90259
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## bairro imob local quartos
## Length:90259 Length:90259 Length:90259 Length:90259
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## suites garagens preco valorm2
## Min. : 0.0000 Min. : 0.0000 Length:90259 Min. : 15
## 1st Qu.: 0.0000 1st Qu.: 0.0000 Class :character 1st Qu.: 7647
## Median : 1.0000 Median : 1.0000 Mode :character Median : 9138
## Mean : 0.7195 Mean : 0.8346 Mean : 9986
## 3rd Qu.: 1.0000 3rd Qu.: 1.0000 3rd Qu.: 10273
## Max. :11.0000 Max. :12.0000 Max. :7440945
## NA's :480 NA's :480 NA's :480
## m2 data
## Min. : 0.00 Min. :2016-04-09
## 1st Qu.: 41.00 1st Qu.:2016-05-22
## Median : 67.00 Median :2016-06-03
## Mean : 89.45 Mean :2016-05-29
## 3rd Qu.: 101.00 3rd Qu.:2016-06-08
## Max. :8616.00 Max. :2016-07-12
## NA's :480 NA's :480
table(aptos_bsb$negocio)
##
## aluguel venda
## 5973 84286
# FILTRAR APENAS OS ANÚNCIOS DE VENDAS
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
vendas<-filter(aptos_bsb,negocio=="venda")
# validação dos dados
vendas<-filter(vendas,quartos!="consultar")
vendas<-filter(vendas,preco!="Consultar Valor")
vendas$preco <-as.numeric(vendas$preco)
vendas$quartos <-as.numeric(vendas$quartos)
max(vendas$preco)
## [1] 9.45e+08
### filtrando os dados pelo preço
vendas <- filter(vendas,preco>150000 & preco<2000000)
# nomes das variáveis
names(vendas)
## [1] "uf" "cidade" "tipo" "negocio" "bairro" "imob"
## [7] "local" "quartos" "suites" "garagens" "preco" "valorm2"
## [13] "m2" "data"
imob<- data.frame(table(vendas$imob))
head(arrange(imob,-Freq),10)
## Var1 Freq
## 1 LOPES DALLOCA 4602
## 2 FEROLA EMPREENDIMENTOS IMOBILIARIOS 3380
## 3 MANU IMOVEIS 1854
## 4 BEIRAMAR ASA SUL 1669
## 5 MIRANDA ESCRITORIO IMOBILIÁRIO 1667
## 6 CONCEITO INTELIGÊNCIA IMOBILIÁRIA S A 1564
## 7 LIMA CORRETORA DE IMÓVEIS 1352
## 8 EDNA AGUIAR CORRETORA DE IMÓVEIS 1216
## 9 KR IMÓVEIS 1168
## 10 LAMARTINE IMOVEIS 1099
# COMPARAÇÃO DE GRUPOS
imob_preco <- vendas %>%
group_by(imob,bairro) %>%
summarise(preco_medio = mean(preco),quantidade =n()) %>%
ungroup()
## `summarise()` regrouping output by 'imob' (override with `.groups` argument)
quartos_precos <-vendas %>%
group_by(quartos) %>%
summarise(preco_medio = mean(preco)) %>%
ungroup()
## `summarise()` ungrouping output (override with `.groups` argument)
summary(vendas)
## uf cidade tipo negocio
## Length:81114 Length:81114 Length:81114 Length:81114
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## bairro imob local quartos
## Length:81114 Length:81114 Length:81114 Min. :1.000
## Class :character Class :character Class :character 1st Qu.:1.000
## Mode :character Mode :character Mode :character Median :2.000
## Mean :1.979
## 3rd Qu.:3.000
## Max. :5.000
## suites garagens preco valorm2
## Min. : 0.000 Min. : 0.0000 Min. : 160000 Min. : 68
## 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 378252 1st Qu.: 7984
## Median : 1.000 Median : 1.0000 Median : 580000 Median : 9269
## Mean : 0.699 Mean : 0.8061 Mean : 692729 Mean : 9360
## 3rd Qu.: 1.000 3rd Qu.: 1.0000 3rd Qu.: 930000 3rd Qu.: 10294
## Max. :11.000 Max. :12.0000 Max. :1996288 Max. :420000
## m2 data
## Min. : 1.00 Min. :2016-04-09
## 1st Qu.: 41.00 1st Qu.:2016-05-20
## Median : 68.00 Median :2016-06-03
## Mean : 87.59 Mean :2016-05-27
## 3rd Qu.: 100.00 3rd Qu.:2016-06-07
## Max. :8616.00 Max. :2016-06-08
vendas<-filter(vendas,m2>20 & m2<250)
#### cruzando variáveis
plot(vendas$preco,vendas$m2)
# HISTOGRAMA
library(ggplot2)
ggplot(vendas,aes(x = preco)) +
geom_histogram(fill = "blue", colour ="black")+
facet_grid(bairro ~.)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
# boxplot
ggplot(vendas,aes(x=negocio,y=preco))+
geom_boxplot(aes(fill=bairro))