Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Présentation de data.table

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Prochain SlideShare
Une Introduction à R
Une Introduction à R
Chargement dans…3
×

Consultez-les par la suite

1 sur 21 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (18)

Les utilisateurs ont également aimé (20)

Publicité

Similaire à Présentation de data.table (20)

Publicité

Plus récents (20)

Présentation de data.table

  1. 1. Introduction à data.table Timeri VECCELLA 1
  2. 2. SÉLECTION DE DONNÉES Sans data.table on pleure ! 2
  3. 3. data.frame et data.table • Un «data.table» est un «data.frame» avec des fonctionnalités additionnelles • Plus lisible, plus compréhensible, plus compact, plus rapide… • Efficient 3
  4. 4. data.table et SQL • Semblable à du SQL (possibilité de définir des clefs) • Permet de réaliser des requêtes dans un tableau mais avec la syntaxe de R : data[<where>, <select>, <group by>] 4
  5. 5. Exemple selection # installation de la librairie install.packages("data.table") # chargement de la librairie library(data.table) # chargement des données load("C:/Users/Ve/Desktop/Raddicts/pokemon.rda") 5
  6. 6. Exemple selection # 1. Selectionner : data.frame et data.table ############# # details / conversions : class(data) dfPokemon <- data dtPokemon <- data.table(data) class(dfPokemon) class(dtPokemon) # # details sur les données : # dfPokemon # dtPokemon 6
  7. 7. Exemple selection # selectionnner le nom des pokemons avec des caracteristiques particulières : # avec un data frame dfPokemon[(dfPokemon$Attack - dfPokemon$Defense) > 10 & dfPokemon$Speed > 120 & dfPokemon$LastEvolution, ]$Name dfPokemon[(dfPokemon$Attack - dfPokemon$Defense) > 10 & dfPokemon$Speed > 120 & dfPokemon$LastEvolution, c("Name", "HP")] # avec un data table dtPokemon[Attack - Defense > 10 & Speed > 120 & LastEvolution, Name] dtPokemon[Attack - Defense > 10 & Speed > 120 & LastEvolution, list(Name,HP)] 7
  8. 8. UTILISATIONS PRINCIPALES Youpi ! 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 pas toutes les lignes d’un tableau) 9
  10. 10. Exemple de filtres # 2. Filtrer des observations #### # avec un data frame dfPokemon[(dfPokemon$Attack - dfPokemon$Defense) > 10 & dfPokemon$Speed > 120 & dfPokemon$LastEvolution, ] # avec un data table dtPokemon[Attack - Defense > 10 & Speed > 120 & LastEvolution] # Filtrer les noms des pokemon commencant par la lettre "A" : # avec un data frame dfPokemon[ grep("^A",dfPokemon$Name), ] # avec un data table dtPokemon[ 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 « objets spéciaux » dans le select : – Pour chaque groupe, ".SD" est la partie du tableau qui correspond à ce groupe. C’est aussi un data.table et on peut lui appliquer une fonction arbitraire – .N nombre d’observations dans chaque groupe .N = nrow(.SD) 13
  14. 14. Exemple d’opérations par groupe # calculer une moyenne dtPokemon[ , mean(Speed), by = LastEvolution] # calculer une moyenne et renommer la statistique calculée dtPokemon[ , list( vitesseMoyenne = mean(Speed) ), by = LastEvolution] # calculer une moyenne en créant une variable de groupe dtPokemon[ , mean(Speed), by = list(LastEvolution, aName = Name %like% "^A" )] # ordonner les valeurs par le keyby dtPokemon[ , 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] # ou dtPokemon[,.N, by =LastEvolution] # sélectioner le pokemon le plus rapide pour les deux catégories d'évolution dtPokemon[, .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 variables 16
  17. 17. Exemple de modifications # 5. Mettre à jour des observations : data.frame et data.table #### # Créer une nouvelle variable # avec un data frame dfPokemon$attackMin <- dfPokemon$Attack dfPokemon$attackMoyenne <- 15 dfPokemon$attackMax <- dfPokemon$SpAttack # modifier la variable si l'attaque spéciale est inférieur à l'attaque (normale) dfPokemon$attackMax[dfPokemon$SpAttack < dfPokemon$Attack] <- dfPokemon$Attack[dfPokemon$SpAttack < dfPokemon$Attack] # avec un data table dtPokemon$attackMin <- dtPokemon$Attack dtPokemon$attackMoyenne <- 15 dtPokemon$attackMax <- dtPokemon$SpAttack # ou dtPokemon[,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)] # ou dtPokemon[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 table dtPokemon[,c("attackMax","attackMoyenne","attackMin") := NULL] 18
  19. 19. Conclusion • Utiliser une bibliothèque permettant de • Selectionner • Filtrer • Grouper • Mettre à jour De manière efficiente !!! 19
  20. 20. MERCI C’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.pdf 21

×