Données : formats long et large
Avant d’être exploité, un jeu de données peut se présenter de deux façons : le format large (wide) et le format long. Et ce n’est pas toujours le plus pratique qui s’offre à nous.
Après avoir montré la différence entre les deux, nous verrons comment passer du long au large avec un tableur et avec Python.
Présentation
Les données longues (ou hautes) apparaissent en colonnes où chaque ligne représente une combinaison entre un caractère (identifiant), un attribut et une valeur.
Les données larges sont présentées en tableau, de sorte que chaque ligne correspond à un caractère et chaque colonne à une variable. À l’intersection des deux se trouvent les valeurs.
Exemple
Soit le tableau suivant (extrait d’une feuille de calcul). Ce sont des données larges.
En format long, il devient ceci :
Race | Taille | Cm |
Husky | Taille mini mâle | 54 |
Husky | Taille maxi mâle | 60 |
Husky | Taille mini femelle | 51 |
Husky | Taille maxi femelle | 56 |
Pointer | Taille mini mâle | 55 |
Pointer | Taille maxi mâle | 62 |
Pointer | Taille mini femelle | 54 |
Pointer | Taille maxi femelle | 60 |
Dalmatien | Taille mini mâle | 56 |
Dalmatien | Taille maxi mâle | 61 |
Dalmatien | Taille mini femelle | 54 |
Dalmatien | Taille maxi femelle | 59 |
Dans cet exemple toutes les valeurs sont renseignées. Donc en format long le tableau \(3 \times 4\) devient une liste de 12 lignes.
Remarques
Le format large est beaucoup plus facile à lire. Certes pas aussi bien qu’un graphique mais par rapport au format long, il n’y a pas photo.
Si une valeur n’est pas renseignée, on le remarque facilement avec le format large mais difficilement avec le long.
Il est donc plus fréquent de vouloir passer du long au large. L’inverse n’est nécessaire que dans quelques cas particuliers (réalisation de graphiques avec R, par exemple).
Tableurs
Avec un tableur, on peut passer du format long au large en réalisant un tableau croisé. L’ordre des lignes et des colonnes risque toutefois d’être chamboulé et les totaux ne signifieront rien.
Python
Supposons que les données se présentent en format long dans un fichier CSV (races.csv).
Nous souhaitons d’abord les visualiser avec Python. Notez que le séparateur est la virgule. Petite précision : dans cet exemple nous supprimons l’accent circonflexe de mâle que Python ne saurait pas lire.
Nous chargeons la bibliothèque pandas. En préambule, nous souhaitons visualiser le jeu de données. La fonction à employer est read.csv.
from pandas import *
sortie = read_csv('races.csv', sep=',')
print(sortie)
Nous obtenons une sortie conforme :
Nous souhaitons à présent obtenir ces données en format large. La fonction à utiliser est pivot_table. Elle a besoin de trois arguments pour savoir quoi mettre en ligne, en colonne et en valeurs, comme vous le constatez ci-dessous.
from pandas import *
long = read_csv('races.csv', sep=',')
large = pivot_table(long, values='Cm', index='Race', columns='Taille')
print(large)
C’est pas beau, ça ?
Note : nous avons réduit les intitulés de colonnes dans le fichier CSV afin de visualiser le tableau en entier.
Remarquez que les intitulés apparaissent en ordre alphabétique, à l’instar du tableau croisé d’Excel.