Web Data Mining com R:
processamento de dados [no R]
Fabr´ Jailson Barth
ıcio
Faculdade BandTec e VAGAS Tecnologia

Junho de 2013
Sum´rio
a
• Projeto R
• O que s˜o dados?
a
• Raw data versus dado tratado.
• Representa¸˜o de dados no R.
ca

Web Data Mining com R: processamento de dados [no R] —

Sum´rio
a

2
Projeto R
• http://www.r-project.org/
• R Studio - http://www.rstudio.com/
´
• E free
´
• E a linguagem de programa¸˜o mais popular para
ca
an´lise de dados
a
• Script ´ melhor que clicar e arastar:
e
´
E mais f´cil de comunicar.
a
Reproduz´
ıvel.
´
E necess´rio pensar mais sobre o problema.
a
• Existe uma quantia grande de pacotes dispon´
ıveis
Web Data Mining com R: processamento de dados [no R] —

Projeto R

3
Defini¸˜o de dados
ca
”Data are values of qualitative or quantitative variables,
belonging to a set of items.”
http://en.wikipedia.org/wiki/Data

Web Data Mining com R: processamento de dados [no R] —

Defini¸˜o de dados
ca

4
”Data are values of qualitative or quantitative variables,
belonging to a set of items.”
Set of items: conjunto de itens (objetos) de interesse.

Web Data Mining com R: processamento de dados [no R] —

Defini¸˜o de dados
ca

5
”Data are values of qualitative or quantitative variables,
belonging to a set of items.”
variables: uma medida ou uma caracter´
ıstica de um item.

Web Data Mining com R: processamento de dados [no R] —

Defini¸˜o de dados
ca

6
”Data are values of qualitative or quantitative variables,
belonging to a set of items.”
qualitative: cidade de origem, sexo, fez ou n˜o
a
tratamento.
quantitative: peso, altura, press˜o do sangue.
a

Web Data Mining com R: processamento de dados [no R] —

Defini¸˜o de dados
ca

7
Raw data versus dados processados
Raw data
• Fonte original dos dados
• Geralmente dif´ para fazer algum tipo de an´lise
ıcil
a
http://en.wikipedia.org/wiki/Raw Data

Web Data Mining com R: processamento de dados [no R] —

Raw data versus dados processados

8
Dados processados
• Dados que est˜o prontos para serem analisados
a
• O processamento pode incluir merging, subsetting,
transforming, etc...
• Todas as etapas devem ser registradas
http://en.wikipedia.org/wiki/Compute data processing

Web Data Mining com R: processamento de dados [no R] —

Raw data versus dados processados

9
Dados brutos

Web Data Mining com R: processamento de dados [no R] —

Dados brutos

10
Dados brutos
considera¸˜o o projeto da aprendizagem que pensa como didaticamente os cursos devem ser projetados com o
ca
uso da tecnologia adequada. Isso inclui levar em conta os aspectos sociais e culturais envolvidos. Deixo abaixo
algumas indica¸˜es de leitura que tratam isso. Assim, acho que dizer que tecnologia deve ser usada de forma
co
respons´vel, n˜o ´ discutir MOOCs. Outro ponto importante ´ destacar que os MOOCs aparecem no contexto
a
a e
e
da educa¸˜o aberta e Ciencia aberta e inclui REAs, que costumavam ser chamados de objetos de aprendizem e
ca
agora discutem-se as licen¸as, as perspectivas de reutiliza¸˜o e de localiza¸˜o; os peri´dicos abertos que
c
ca
ca
o
reagem aos altos valores de assinaturas dos peri´dicos tradicionais, as novas formas de publica¸˜o incluindo
o
ca
blogs; a educa¸˜o hibrida; os ambientes pessoais de aprendizagem, etc. No geral
ca

Web Data Mining com R: processamento de dados [no R] —

Dados brutos

11
Exemplo de dado processado
Table 1: Exemplo de tabela com as transa¸˜es dos usu´rios
co
a
usu´rio
a

categoria1

categoria2

categoria3

···

categoriam

user1

0

2

0

···

1

user2

1

1

0

···

0

user3

2

0

1

···

0

user4

0

1

0

···

0

···

···

···

···

···

···

usern

1

1

0

···

1

Web Data Mining com R: processamento de dados [no R] —

Exemplo de dado processado

12
Tiny data
• Cada vari´vel (atributo) forma uma coluna.
a
• Cada observa¸˜o (exemplo) forma uma linha.
ca
• Cada tabela ou arquivo armazena dados sobre uma
observa¸˜o (i.e., pessoas / hospitais)
ca
• http://vita.had.co.nz/papers/tidy-data.pdf

Web Data Mining com R: processamento de dados [no R] —

Tiny data

13
Big or small - you need
the right data

14
Representa¸˜o de dados
ca
no R

15
Tipos de dados importantes no R
• Classes: Character, Numeric, Integer, Logical
• Objetos: Vector, Matrices, Data frames, List, Factors,
Missing Values
• Operadores: Subsetting, Logical Subsetting

Representa¸˜o de dados no R —
ca

Tipos de dados importantes no R

16
Character
nome = "maria"
class(nome)
## [1] "character"
nome
## [1] "maria"

Representa¸˜o de dados no R —
ca

Character

17
Numeric
peso = 76.2
class(peso)
## [1] "numeric"
peso
## [1] 76.2

Representa¸˜o de dados no R —
ca

Numeric

18
Integer
qtdFilhos = 1L
class(qtdFilhos)
## [1] "integer"
qtdFilhos
## [1] 1

Representa¸˜o de dados no R —
ca

Integer

19
Logical
temCarro = TRUE
class(temCarro)
## [1] "logical"
temCarro
## [1] TRUE

Representa¸˜o de dados no R —
ca

Logical

20
Vectors
Um conjunto de valores da mesma classe.
pesos = c(76.2, 80.3, 90, 117.4)
pesos
## [1] 76.2 80.3 90 117.4
nomes = c("maria", "carlos", "pedro")
nomes
## [1] "maria" "carlos" "pedro"

Representa¸˜o de dados no R —
ca

Vectors

21
Lists
Um conjunto de valores que pode ser heterogˆneo.
e
pesosV = c(76.2, 80.3, 90, 117.4)
nomesV = c("maria", "carlos", "pedro", "ant^nio")
o
myList <- list(pesos = pesosV, nomes = nomesV)
myList
##
##
##
##
##

$pesos
[1] 76.2

80.3

$nomes
[1] "maria"

Representa¸˜o de dados no R —
ca

Lists

90.0 117.4

"carlos"

"pedro"

"ant^nio"
o

22
Lists
Um conjunto de valores que pode ser heterogˆneo.
e
pesosV = c(76.2, 80.3, 90, 117.4)
nomesV = c("maria", "carlos", "pedro", "ant^nio")
o
myList <- list(pesos = pesosV, nomes = nomesV)
myList
##
##
##
##
##

$pesos
[1] 76.2

80.3

$nomes
[1] "maria"

Representa¸˜o de dados no R —
ca

Lists

90.0 117.4

"carlos"

"pedro"

"ant^nio"
o

23
Matrizes
Vetores com m´ltiplas dimens˜es.
u
o
myMatrix = matrix(c(1, 2, 3, 4), byrow = T, nrow = 2)
myMatrix
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4

Representa¸˜o de dados no R —
ca

Matrizes

24
Data frames
M´ltiplos vetores de classes diferentes, mas com o mesmo
u
tamanho.
vector1 = c(188.2, 181.3, 193.4)
vector2 = c("jeff", "roger", "andrew", "brian")
myDataFrame = data.frame(heights = vector1,
firstNames = vector2)
## Error: arguments imply differing number of rows: 3, 4
myDataFrame
## Error: object ’myDataFrame’ not found

Representa¸˜o de dados no R —
ca

Data frames

25
Data frames
> vector1 = c(188.2, 181.3, 193.4)
> vector2 = c("jeff", "roger", "andrew")
> myDataFrame = data.frame(heights = vector1,
firstNames = vector2)
> myDataFrame
heights firstNames
1
188.2
jeff
2
181.3
roger
3
193.4
andrew

Representa¸˜o de dados no R —
ca

Data frames

26
Factors
Vari´veis qualitativas que podem ser inclu´
a
ıdas no modelo.
smoker = c("yes", "no", "yes", "yes")
smokerFactor = as.factor(smoker)
smokerFactor
## [1] yes no yes yes
## Levels: no yes

Representa¸˜o de dados no R —
ca

Factors

27
Missing values
No R os valores faltantes s˜o codificados como NA
a
vector1 <- c(188.2, 181.3, 193.4, NA)
vector1
## [1] 188.2 181.3 193.4 NA
is.na(vector1)
## [1] FALSE FALSE FALSE TRUE

Representa¸˜o de dados no R —
ca

Missing values

28
Subsetting
vector1 = c(188.2, 181.3, 193.4, 192.3)
vector2 = c("jeff", "roger", "andrew", "brian")
myDataFrame = data.frame(heights = vector1,
firstNames = vector2)
vector1[1]
## [1] 188.2
vector1[c(1, 2, 4)]
## [1] 188.2 181.3 192.3

Representa¸˜o de dados no R —
ca

Subsetting

29
Subsetting
myDataFrame[1, 1:2]
## heights firstNames
## 1 188.2 jeff
myDataFrame$firstNames
## [1] jeff roger andrew brian
## Levels: andrew brian jeff roger

Representa¸˜o de dados no R —
ca

Subsetting

30
Logical subsetting
myDataFrame[myDataFrame$firstNames == "jeff", ]
## heights firstNames
## 1 188.2 jeff
myDataFrame[heights < 190, ]
##
##
##
##

heights
1 188.2
2 181.3
4 192.3

firstNames
jeff
roger
brian

Representa¸˜o de dados no R —
ca

Logical subsetting

31
Obtendo dados

32
Dados locais (toy examples)
help(data)
data()
data(iris)

Obtendo dados —

Dados locais (toy examples)

33
Earthquake data (dados reais)
fileUrl <"http://earthquake.usgs.gov/earthquakes
/catalogs/eqs7day-M1.txt"
download.file(fileUrl,destfile="./data/earthquakeData.csv",
method="curl")
dateDownloaded <- date()
eData <- read.csv("./data/earthquakeData.csv")
https://explore.data.gov/Geography-and-Environment/Worldwide-M1-Earthquakes-Past-7-Days/7tag-iwnu

Obtendo dados —

Earthquake data (dados reais)

34

Web Data Mining com R: pré-processamento de dados [no R]

  • 1.
    Web Data Miningcom R: processamento de dados [no R] Fabr´ Jailson Barth ıcio Faculdade BandTec e VAGAS Tecnologia Junho de 2013
  • 2.
    Sum´rio a • Projeto R •O que s˜o dados? a • Raw data versus dado tratado. • Representa¸˜o de dados no R. ca Web Data Mining com R: processamento de dados [no R] — Sum´rio a 2
  • 3.
    Projeto R • http://www.r-project.org/ •R Studio - http://www.rstudio.com/ ´ • E free ´ • E a linguagem de programa¸˜o mais popular para ca an´lise de dados a • Script ´ melhor que clicar e arastar: e ´ E mais f´cil de comunicar. a Reproduz´ ıvel. ´ E necess´rio pensar mais sobre o problema. a • Existe uma quantia grande de pacotes dispon´ ıveis Web Data Mining com R: processamento de dados [no R] — Projeto R 3
  • 4.
    Defini¸˜o de dados ca ”Dataare values of qualitative or quantitative variables, belonging to a set of items.” http://en.wikipedia.org/wiki/Data Web Data Mining com R: processamento de dados [no R] — Defini¸˜o de dados ca 4
  • 5.
    ”Data are valuesof qualitative or quantitative variables, belonging to a set of items.” Set of items: conjunto de itens (objetos) de interesse. Web Data Mining com R: processamento de dados [no R] — Defini¸˜o de dados ca 5
  • 6.
    ”Data are valuesof qualitative or quantitative variables, belonging to a set of items.” variables: uma medida ou uma caracter´ ıstica de um item. Web Data Mining com R: processamento de dados [no R] — Defini¸˜o de dados ca 6
  • 7.
    ”Data are valuesof qualitative or quantitative variables, belonging to a set of items.” qualitative: cidade de origem, sexo, fez ou n˜o a tratamento. quantitative: peso, altura, press˜o do sangue. a Web Data Mining com R: processamento de dados [no R] — Defini¸˜o de dados ca 7
  • 8.
    Raw data versusdados processados Raw data • Fonte original dos dados • Geralmente dif´ para fazer algum tipo de an´lise ıcil a http://en.wikipedia.org/wiki/Raw Data Web Data Mining com R: processamento de dados [no R] — Raw data versus dados processados 8
  • 9.
    Dados processados • Dadosque est˜o prontos para serem analisados a • O processamento pode incluir merging, subsetting, transforming, etc... • Todas as etapas devem ser registradas http://en.wikipedia.org/wiki/Compute data processing Web Data Mining com R: processamento de dados [no R] — Raw data versus dados processados 9
  • 10.
    Dados brutos Web DataMining com R: processamento de dados [no R] — Dados brutos 10
  • 11.
    Dados brutos considera¸˜o oprojeto da aprendizagem que pensa como didaticamente os cursos devem ser projetados com o ca uso da tecnologia adequada. Isso inclui levar em conta os aspectos sociais e culturais envolvidos. Deixo abaixo algumas indica¸˜es de leitura que tratam isso. Assim, acho que dizer que tecnologia deve ser usada de forma co respons´vel, n˜o ´ discutir MOOCs. Outro ponto importante ´ destacar que os MOOCs aparecem no contexto a a e e da educa¸˜o aberta e Ciencia aberta e inclui REAs, que costumavam ser chamados de objetos de aprendizem e ca agora discutem-se as licen¸as, as perspectivas de reutiliza¸˜o e de localiza¸˜o; os peri´dicos abertos que c ca ca o reagem aos altos valores de assinaturas dos peri´dicos tradicionais, as novas formas de publica¸˜o incluindo o ca blogs; a educa¸˜o hibrida; os ambientes pessoais de aprendizagem, etc. No geral ca Web Data Mining com R: processamento de dados [no R] — Dados brutos 11
  • 12.
    Exemplo de dadoprocessado Table 1: Exemplo de tabela com as transa¸˜es dos usu´rios co a usu´rio a categoria1 categoria2 categoria3 ··· categoriam user1 0 2 0 ··· 1 user2 1 1 0 ··· 0 user3 2 0 1 ··· 0 user4 0 1 0 ··· 0 ··· ··· ··· ··· ··· ··· usern 1 1 0 ··· 1 Web Data Mining com R: processamento de dados [no R] — Exemplo de dado processado 12
  • 13.
    Tiny data • Cadavari´vel (atributo) forma uma coluna. a • Cada observa¸˜o (exemplo) forma uma linha. ca • Cada tabela ou arquivo armazena dados sobre uma observa¸˜o (i.e., pessoas / hospitais) ca • http://vita.had.co.nz/papers/tidy-data.pdf Web Data Mining com R: processamento de dados [no R] — Tiny data 13
  • 14.
    Big or small- you need the right data 14
  • 15.
  • 16.
    Tipos de dadosimportantes no R • Classes: Character, Numeric, Integer, Logical • Objetos: Vector, Matrices, Data frames, List, Factors, Missing Values • Operadores: Subsetting, Logical Subsetting Representa¸˜o de dados no R — ca Tipos de dados importantes no R 16
  • 17.
    Character nome = "maria" class(nome) ##[1] "character" nome ## [1] "maria" Representa¸˜o de dados no R — ca Character 17
  • 18.
    Numeric peso = 76.2 class(peso) ##[1] "numeric" peso ## [1] 76.2 Representa¸˜o de dados no R — ca Numeric 18
  • 19.
    Integer qtdFilhos = 1L class(qtdFilhos) ##[1] "integer" qtdFilhos ## [1] 1 Representa¸˜o de dados no R — ca Integer 19
  • 20.
    Logical temCarro = TRUE class(temCarro) ##[1] "logical" temCarro ## [1] TRUE Representa¸˜o de dados no R — ca Logical 20
  • 21.
    Vectors Um conjunto devalores da mesma classe. pesos = c(76.2, 80.3, 90, 117.4) pesos ## [1] 76.2 80.3 90 117.4 nomes = c("maria", "carlos", "pedro") nomes ## [1] "maria" "carlos" "pedro" Representa¸˜o de dados no R — ca Vectors 21
  • 22.
    Lists Um conjunto devalores que pode ser heterogˆneo. e pesosV = c(76.2, 80.3, 90, 117.4) nomesV = c("maria", "carlos", "pedro", "ant^nio") o myList <- list(pesos = pesosV, nomes = nomesV) myList ## ## ## ## ## $pesos [1] 76.2 80.3 $nomes [1] "maria" Representa¸˜o de dados no R — ca Lists 90.0 117.4 "carlos" "pedro" "ant^nio" o 22
  • 23.
    Lists Um conjunto devalores que pode ser heterogˆneo. e pesosV = c(76.2, 80.3, 90, 117.4) nomesV = c("maria", "carlos", "pedro", "ant^nio") o myList <- list(pesos = pesosV, nomes = nomesV) myList ## ## ## ## ## $pesos [1] 76.2 80.3 $nomes [1] "maria" Representa¸˜o de dados no R — ca Lists 90.0 117.4 "carlos" "pedro" "ant^nio" o 23
  • 24.
    Matrizes Vetores com m´ltiplasdimens˜es. u o myMatrix = matrix(c(1, 2, 3, 4), byrow = T, nrow = 2) myMatrix ## [,1] [,2] ## [1,] 1 2 ## [2,] 3 4 Representa¸˜o de dados no R — ca Matrizes 24
  • 25.
    Data frames M´ltiplos vetoresde classes diferentes, mas com o mesmo u tamanho. vector1 = c(188.2, 181.3, 193.4) vector2 = c("jeff", "roger", "andrew", "brian") myDataFrame = data.frame(heights = vector1, firstNames = vector2) ## Error: arguments imply differing number of rows: 3, 4 myDataFrame ## Error: object ’myDataFrame’ not found Representa¸˜o de dados no R — ca Data frames 25
  • 26.
    Data frames > vector1= c(188.2, 181.3, 193.4) > vector2 = c("jeff", "roger", "andrew") > myDataFrame = data.frame(heights = vector1, firstNames = vector2) > myDataFrame heights firstNames 1 188.2 jeff 2 181.3 roger 3 193.4 andrew Representa¸˜o de dados no R — ca Data frames 26
  • 27.
    Factors Vari´veis qualitativas quepodem ser inclu´ a ıdas no modelo. smoker = c("yes", "no", "yes", "yes") smokerFactor = as.factor(smoker) smokerFactor ## [1] yes no yes yes ## Levels: no yes Representa¸˜o de dados no R — ca Factors 27
  • 28.
    Missing values No Ros valores faltantes s˜o codificados como NA a vector1 <- c(188.2, 181.3, 193.4, NA) vector1 ## [1] 188.2 181.3 193.4 NA is.na(vector1) ## [1] FALSE FALSE FALSE TRUE Representa¸˜o de dados no R — ca Missing values 28
  • 29.
    Subsetting vector1 = c(188.2,181.3, 193.4, 192.3) vector2 = c("jeff", "roger", "andrew", "brian") myDataFrame = data.frame(heights = vector1, firstNames = vector2) vector1[1] ## [1] 188.2 vector1[c(1, 2, 4)] ## [1] 188.2 181.3 192.3 Representa¸˜o de dados no R — ca Subsetting 29
  • 30.
    Subsetting myDataFrame[1, 1:2] ## heightsfirstNames ## 1 188.2 jeff myDataFrame$firstNames ## [1] jeff roger andrew brian ## Levels: andrew brian jeff roger Representa¸˜o de dados no R — ca Subsetting 30
  • 31.
    Logical subsetting myDataFrame[myDataFrame$firstNames =="jeff", ] ## heights firstNames ## 1 188.2 jeff myDataFrame[heights < 190, ] ## ## ## ## heights 1 188.2 2 181.3 4 192.3 firstNames jeff roger brian Representa¸˜o de dados no R — ca Logical subsetting 31
  • 32.
  • 33.
    Dados locais (toyexamples) help(data) data() data(iris) Obtendo dados — Dados locais (toy examples) 33
  • 34.
    Earthquake data (dadosreais) fileUrl <"http://earthquake.usgs.gov/earthquakes /catalogs/eqs7day-M1.txt" download.file(fileUrl,destfile="./data/earthquakeData.csv", method="curl") dateDownloaded <- date() eData <- read.csv("./data/earthquakeData.csv") https://explore.data.gov/Geography-and-Environment/Worldwide-M1-Earthquakes-Past-7-Days/7tag-iwnu Obtendo dados — Earthquake data (dados reais) 34