Introduction to DataFrame

Dutartre Dan

12 avril 2019

1 Histoire

R est le sucesseur du language s+
Sorti dans les années 2000, il est principalement utilisé comme une alternative de matlab dans le monde statistiques
Programmation vectorielle dans le but d’éviter les boucles

Pour les utilisateurs matlab ou python http://mathesaurus.sourceforge.net/octave-r.html

2 DataFrame

2.1 Les fonctions de découvertes

Une data frame est une structure de données en deux dimensions, avec les individus (observations) en lignes et les différentes variables en colonnes.
Les ensembles de données peuvent être de différents types (Boolean,numeric,character…).
De nombreuses petites fonctions utiles sont disponibles et permettent de “visualiser” notre data frame.
La fonction dim nous renvoie les dimensions, la fonction head affiche les premières observations d’une data frame ou une variabme.
La fonction names renvoie les noms de variables, la fonction str un résumé des variables avec leur type, la fonction summary un résumé numérique.

## [1] 578   4
##   weight Time Chick Diet
## 1     42    0     1    1
## 2     51    2     1    1
## 3     59    4     1    1
## 4     64    6     1    1
## 5     76    8     1    1
## 6     93   10     1    1
## [1] "weight" "Time"   "Chick"  "Diet"
## Classes 'nfnGroupedData', 'nfGroupedData', 'groupedData' and 'data.frame':   578 obs. of  4 variables:
##  $ weight: num  42 51 59 64 76 93 106 125 149 171 ...
##  $ Time  : num  0 2 4 6 8 10 12 14 16 18 ...
##  $ Chick : Ord.factor w/ 50 levels "18"<"16"<"15"<..: 15 15 15 15 15 15 15 15 15 15 ...
##  $ Diet  : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
##  - attr(*, "formula")=Class 'formula'  language weight ~ Time | Chick
##   .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv> 
##  - attr(*, "outer")=Class 'formula'  language ~Diet
##   .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv> 
##  - attr(*, "labels")=List of 2
##   ..$ x: chr "Time"
##   ..$ y: chr "Body weight"
##  - attr(*, "units")=List of 2
##   ..$ x: chr "(days)"
##   ..$ y: chr "(gm)"
##      weight           Time           Chick     Diet   
##  Min.   : 35.0   Min.   : 0.00   13     : 12   1:220  
##  1st Qu.: 63.0   1st Qu.: 4.00   9      : 12   2:120  
##  Median :103.0   Median :10.00   20     : 12   3:120  
##  Mean   :121.8   Mean   :10.72   10     : 12   4:118  
##  3rd Qu.:163.8   3rd Qu.:16.00   17     : 12          
##  Max.   :373.0   Max.   :21.00   19     : 12          
##                                  (Other):506
## 
##   1   2   3   4 
## 220 120 120 118

D’autres fonctions sont utiles telles que min range unique

2.2 Créer une Dataframe


Si l’on désire créer une data Frame à partir de données, on peut soit le faire manuellement, soit depuis la lecture d’un fichier (txt,csv,xls…)

## 'data.frame':    8 obs. of  5 variables:
##  $ planetes: Factor w/ 8 levels "Jupiter","Mars",..: 3 8 6 2 1 5 7 4
##  $ type    : Factor w/ 2 levels "Gazeuse","Tellurique": 2 2 2 2 1 1 1 1
##  $ diametre: num  0.382 0.949 1 0.532 11.209 ...
##  $ rotation: num  58.64 -243.02 1 1.03 0.41 ...
##  $ anneaux : logi  FALSE FALSE FALSE FALSE TRUE TRUE ...

Depuis un fichier les arguments utiles sont header sep dec fill

## 'data.frame':    8 obs. of  5 variables:
##  $ planetes: Factor w/ 8 levels "Jupiter","Mars",..: 3 8 6 2 1 5 7 4
##  $ type    : Factor w/ 2 levels "Gazeuse","Tellurique": 2 2 2 2 1 1 1 1
##  $ diametre: num  0.382 0.949 1 0.532 11.209 ...
##  $ rotation: num  58.64 -243.02 1 1.03 0.41 ...
##  $ anneaux : logi  FALSE FALSE FALSE FALSE FALSE TRUE ...

2.3 Extraction d’éléments

Comme pour les vecteurs ou les matrices, on peut sélectionner des éléments du jeu de données à l’aide de [] et d’une ,
Mais surtout on peut utiliser le nom d’une des variables directement dans les []

Le symbole $ permet d’accèder directement à une colonne (faisant référance à la syntaxe de pandas .)

Le plus intéressant étant la possibilité d’utilisé des conditions pour la sélection.
La commande subset() permet de sélectionner des observations remplissant une ou plusieurs conditions.

##   planetes       type diametre rotation anneaux
## 1  Mercure Tellurique    0.382    58.64   FALSE
## 2    Venus Tellurique    0.949  -243.02   FALSE
## 3    Terre Tellurique    1.000     1.00   FALSE
##   planetes    type diametre rotation anneaux
## 6  Saturne Gazeuse    9.449     0.43    TRUE
## 7   Uranus Gazeuse    4.007    -0.72    TRUE
## 8  Neptune Gazeuse    3.883     0.67    TRUE
##   anneaux
## 5    TRUE
## 6    TRUE
## 7    TRUE
## 8    TRUE
##   planetes    type diametre rotation anneaux
## 5  Jupiter Gazeuse   11.209     0.41    TRUE
## 6  Saturne Gazeuse    9.449     0.43    TRUE
## 7   Uranus Gazeuse    4.007    -0.72    TRUE
## 8  Neptune Gazeuse    3.883     0.67    TRUE

3 Graphiques

3.1 Multiple plot

Données multiples sur la même figure.
En R chaque appel à la fonction plot crée une nouvelle fenêtre de figure.
La méchanique est la suivante, on crée une fenêtre et on y ajoute chaque éléments individuellements avec la fonction points
Warning: points ajoute des points mais ne change pas le cadre de la fenêtre (limites en X & Y)

##   nprocs shmem   xml native
## 1      2 0.970 1.062  1.303
## 2      4 0.985 1.184  1.468
## 3      8 0.999 1.332  1.842
## 4     16 1.061 1.730  2.829
## 5     32 1.233 2.522  4.920
## 6     64 1.679 4.164  9.692


On peut utiliser aussi la fonction title pour ajouter les noms des axes et le titre du graphique,le tout avec des couleurs!


Le même résultat avec ggplot. Un “Plot” via cette librairie se décompose de la manière suivante MonPlot <- data + Aesthetics + Geometry
Derrière le terme Aesthetics se cache tout ce qui concerne les couelurs,les tailles, les formes, les labels etc … Elle est définie via l’option aes(x=Time) ou aes_string(x=mystr)
En ce qui concerne “Geometry”, cela regroupe les options relatives aux types de graphiques (plot,histogramme etc…)


De façon un peu plus jolie, en utilisant la fonction melt pour fusionner les données
En effet la libraire ggplot est “conçue” pour fonctionner avec des tables (ou dataframe)

##   nprocs variable value
## 1      2    shmem 0,970
## 2      4    shmem 0,985
## 3      8    shmem 0,999
## 4     16    shmem 1,061
## 5     32    shmem 1,233
## 6     64    shmem 1,679

On peut aussi aisément relier les points


3.2 Boxplot

Les problèmes récurrents avec les boxplots sont centrés autour des noms des variables et de leurs emplacements .
Ceci peut être contournés avec les options names las at.


L’option las permet d’orienter les lables (horizontalement ou verticalement), mais cela peut nécissité d’augmenter la taille de la fenêtre avec l’option par.
On peut choisir par exemple de modifier les marges de la façon suivante :
Mar(bottom = NULL, left = NULL, top = NULL, right = NULL, outer = FALSE)


L’option at est généralement utilisée pour grouper des éléments ensembles


3.3 Barplot

3.4 PlotYY

Le plotyy (matlab,python…) représente un plot avec deux échelles différentes Utilisation des données météo du MdB Kibana

Méthode non conventionnelle