Introduction à data.tableTimeri VECCELLA1
SÉLECTION DE DONNÉESSans data.table on pleure !2
data.frame et data.table• Un «data.table» est un «data.frame» avec desfonctionnalités additionnelles• Plus lisible, plus c...
data.table et SQL• Semblable à du SQL (possibilité de définir desclefs)• Permet de réaliser des requêtes dans untableau ma...
Exemple selection# installation de la librairieinstall.packages("data.table")# chargement de la librairielibrary(data.tabl...
Exemple selection# 1. Selectionner : data.frame et data.table ############## details / conversions :class(data)dfPokemon <...
Exemple selection# selectionnner le nom des pokemons avec des caracteristiques particulières :# avec un data framedfPokemo...
UTILISATIONS PRINCIPALESYoupi !8
Filtrer• Garder les lignes qui nous intéresse :– Soit avec une clause– Soit avec une clef (ou plusieurs clefs)• data[ <whe...
Exemple de filtres# 2. Filtrer des observations ##### avec un data framedfPokemon[(dfPokemon$Attack - dfPokemon$Defense) >...
Exemple de filtres## 3. Filtrer des observations avec clefs ##### définir une clef :setkey(dtPokemon,LastEvolution)dtPokem...
Grouper• Sélectionner, filtrer, calculer par groupe(calculer des statistiques agrégées…)data[<where>, <select>, by = <grou...
.SD et .N• En groupant, on peut utiliser des « objetsspéciaux » dans le select :– Pour chaque groupe, ".SD" est la partie ...
Exemple d’opérations par groupe# calculer une moyennedtPokemon[ , mean(Speed), by = LastEvolution]# calculer une moyenne e...
Exemple d’opérations par groupe# faire des opérations par groupe avec .SD et .N :dtPokemon[, nrow(.SD) , by = LastEvolutio...
Mettre à jours des observations• Opérateur « := » pour :– Créer des variables– Modifier des variables– Supprimer des varia...
Exemple de modifications# 5. Mettre à jour des observations : data.frame et data.table ##### Créer une nouvelle variable# ...
Exemple de modifications# pour une modification :dtPokemon[SpAttack < Attack, attackMax := Attack]# pour plusieurs modific...
Conclusion• Utiliser une bibliothèque permettant de• Selectionner• Filtrer• Grouper• Mettre à jourDe manière efficiente !!...
MERCIC’est tout… pour l’instant !!20
Liens / CRAN• http://cran.r-project.org/web/packages/data.table/index.html• http://cran.r-project.org/web/packages/data.ta...
Prochain SlideShare
Chargement dans…5
×

Présentation de data.table

1 076 vues

Publié le

data.table est un package qui facilite et accélère les opérations de filtrage, création et mises à jours de variables et d'agrégation d'un tableau de donénes.

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 076
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
22
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Présentation de data.table

  1. 1. Introduction à data.tableTimeri VECCELLA1
  2. 2. SÉLECTION DE DONNÉESSans data.table on pleure !2
  3. 3. data.frame et data.table• Un «data.table» est un «data.frame» avec desfonctionnalités additionnelles• Plus lisible, plus compréhensible, pluscompact, plus rapide…• Efficient3
  4. 4. data.table et SQL• Semblable à du SQL (possibilité de définir desclefs)• Permet de réaliser des requêtes dans untableau mais avec la syntaxe de R :data[<where>, <select>, <group by>]4
  5. 5. Exemple selection# installation de la librairieinstall.packages("data.table")# chargement de la librairielibrary(data.table)# chargement des donnéesload("C:/Users/Ve/Desktop/Raddicts/pokemon.rda")5
  6. 6. Exemple selection# 1. Selectionner : data.frame et data.table ############## details / conversions :class(data)dfPokemon <- datadtPokemon <- data.table(data)class(dfPokemon)class(dtPokemon)# # details sur les données :# dfPokemon# dtPokemon6
  7. 7. Exemple selection# selectionnner le nom des pokemons avec des caracteristiques particulières :# avec un data framedfPokemon[(dfPokemon$Attack - dfPokemon$Defense) > 10 &dfPokemon$Speed > 120 & dfPokemon$LastEvolution, ]$NamedfPokemon[(dfPokemon$Attack - dfPokemon$Defense) > 10 &dfPokemon$Speed > 120 & dfPokemon$LastEvolution, c("Name", "HP")]# avec un data tabledtPokemon[Attack - Defense > 10 & Speed > 120 & LastEvolution, Name]dtPokemon[Attack - Defense > 10 & Speed > 120 & LastEvolution,list(Name,HP)]7
  8. 8. UTILISATIONS PRINCIPALESYoupi !8
  9. 9. Filtrer• Garder les lignes qui nous intéresse :– Soit avec une clause– Soit avec une clef (ou plusieurs clefs)• data[ <where>, <select>, <group by>]• Plus rapide avec des clefs (ne parcourt pastoutes les lignes d’un tableau)9
  10. 10. Exemple de filtres# 2. Filtrer des observations ##### avec un data framedfPokemon[(dfPokemon$Attack - dfPokemon$Defense) > 10 & dfPokemon$Speed >120 & dfPokemon$LastEvolution, ]# avec un data tabledtPokemon[Attack - Defense > 10 & Speed > 120 & LastEvolution]# Filtrer les noms des pokemon commencant par la lettre "A" :# avec un data framedfPokemon[ grep("^A",dfPokemon$Name), ]# avec un data tabledtPokemon[ Name %like% "^A" ]10
  11. 11. Exemple de filtres## 3. Filtrer des observations avec clefs ##### définir une clef :setkey(dtPokemon,LastEvolution)dtPokemon[J(TRUE)]# définir deux clefs :setkey(dtPokemon, Attack, LastEvolution)dtPokemon[J(c(110:120),TRUE)]11
  12. 12. Grouper• Sélectionner, filtrer, calculer par groupe(calculer des statistiques agrégées…)data[<where>, <select>, by = <group>]12
  13. 13. .SD et .N• En groupant, on peut utiliser des « objetsspéciaux » dans le select :– Pour chaque groupe, ".SD" est la partie du tableauqui correspond à ce groupe. C’est aussi undata.table et on peut lui appliquer une fonctionarbitraire– .N nombre d’observations dans chaque groupe.N = nrow(.SD)13
  14. 14. Exemple d’opérations par groupe# calculer une moyennedtPokemon[ , mean(Speed), by = LastEvolution]# calculer une moyenne et renommer la statistique calculéedtPokemon[ , list( vitesseMoyenne = mean(Speed) ), by = LastEvolution]# calculer une moyenne en créant une variable de groupedtPokemon[ , mean(Speed), by = list(LastEvolution, aName = Name %like% "^A" )]# ordonner les valeurs par le keybydtPokemon[ , mean(Speed), keyby = list(LastEvolution, aName = Name %like% "^A" )]14
  15. 15. Exemple d’opérations par groupe# faire des opérations par groupe avec .SD et .N :dtPokemon[, nrow(.SD) , by = LastEvolution]# oudtPokemon[,.N, by =LastEvolution]# sélectioner le pokemon le plus rapide pour les deux catégoriesdévolutiondtPokemon[, .SD[which.max(Speed)] , by = LastEvolution]15
  16. 16. Mettre à jours des observations• Opérateur « := » pour :– Créer des variables– Modifier des variables– Supprimer des variables16
  17. 17. Exemple de modifications# 5. Mettre à jour des observations : data.frame et data.table ##### Créer une nouvelle variable# avec un data framedfPokemon$attackMin <- dfPokemon$AttackdfPokemon$attackMoyenne <- 15dfPokemon$attackMax <- dfPokemon$SpAttack# modifier la variable si lattaque spéciale est inférieur à lattaque (normale)dfPokemon$attackMax[dfPokemon$SpAttack < dfPokemon$Attack] <-dfPokemon$Attack[dfPokemon$SpAttack < dfPokemon$Attack]# avec un data tabledtPokemon$attackMin <- dtPokemon$AttackdtPokemon$attackMoyenne <- 15dtPokemon$attackMax <- dtPokemon$SpAttack# oudtPokemon[,attackMax := SpAttack]17
  18. 18. Exemple de modifications# pour une modification :dtPokemon[SpAttack < Attack, attackMax := Attack]# pour plusieurs modifications :dtPokemon[SpAttack < Attack, := (attackMax=Attack, attackMin = SpAttack)]# oudtPokemon[SpAttack < Attack, c("attackMax","attackMin") := list(Attack,SpAttack)]# # supprimer des variables:# # avec un data frame# dfPokemon$attackMax <- NULL# dtPokemon$attackMin <- NULL# dtPokemon$attackMoyenne <- NULL# avec un data tabledtPokemon[,c("attackMax","attackMoyenne","attackMin") := NULL]18
  19. 19. Conclusion• Utiliser une bibliothèque permettant de• Selectionner• Filtrer• Grouper• Mettre à jourDe manière efficiente !!!19
  20. 20. MERCIC’est tout… pour l’instant !!20
  21. 21. Liens / CRAN• http://cran.r-project.org/web/packages/data.table/index.html• http://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro.pdf21

×