« Importer et exporter des données avec Tidyverse » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
Ligne 67 : Ligne 67 :


Nous proposons ici les noms des dossiers <code>raw</code> et <code>transformed</code>, mais d'autres solutions sont envisageables. Si possible, le dossier avec les données brutes devrait apparaître avant le dossier avec les données finalisées.
Nous proposons ici les noms des dossiers <code>raw</code> et <code>transformed</code>, mais d'autres solutions sont envisageables. Si possible, le dossier avec les données brutes devrait apparaître avant le dossier avec les données finalisées.
Des ultérieurs sous-dossiers pour mieux organiser les données sont envisageables, mais conseillées seulement avec un grand nombre de fichiers et des relations sémantiques qui suggèrent une sous-division (e.g. plusieurs études/expériences dans un projet, dont chaque avec beaucoup de fichiers différents). Autrement, il est plus simple d'insérer les fichiers directement dans les dossiers, avec des bonnes stratégies de nommage (voir sous-section suivante).


==== Dossier avec les données brutes ====
==== Dossier avec les données brutes ====

Version du 15 octobre 2021 à 10:34

Cet article est en construction: un auteur est en train de le modifier.

En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.



Introduction

L'ecosystème Tidyverse met à disposition plusieurs fonctions pour importer et exporter des données qui représentent des alternatives aux modalités mises à disposition de base par R. Cet article propose un aperçu technique des ces fonctions, ainsi que quelques éléments de réflexion et des bonnes pratiques pour l'organisation et la structuration des fichiers qui contiennent des données.

L'article représente cependant une introduction souple et pragmatique à l'importation et exportation des données, tandis que des contraintes plus strictes et déontologiques sont de plus en plus fréquentes et même demandées dans certaines situations (e.g. Data Management Plan, projet pour des fonds, etc.). Vous pouvez considérer cet article comme un premier pas dans des directions plus articulées.

Pour des informations plus approfondies sur les données de recherche, voir :

Avantages des fonctions Tidyverse

Les avantages d'utiliser les fonctions de Tidyverse concernent principalement :

  • Possibilité d'importer depuis différentes sources (fichiers de text, spreadsheet, autres logiciels d'analyse statistique, ...) ;
  • Homogénéité des formats des données une fois importées, indépendamment du type de source originale ;
  • Les données sont déjà prêtes pour le traitement successif, comme par exemple l'organisation, la manipulation, la visualisation, la modélisation, ou la communication des résultats.
  • Possibilité de créer un flux d'importation automatisé qui maintient les données originales, c'est-à-dire les données brutes récoltés
  • Exportation des données dans des formats propices à l'archivage et au partage (formats textuels plutôt que formats propriétaires ou nécessitant de logiciels particuliers)

Objectifs de l'article

L'article vise à un double objectif :

  • Technique
    Fournir des exemples d'importations et exportations de données qui peuvent être utiles dans des situations fréquentes en sciences sociales ;
  • Pratique
    Sensibiliser à l'importance de bien organiser les données, en appliquant des bonnes pratiques sur l'organisation des fichiers et l'organisation des données à l'intérieur des fichiers.

Pour atteindre ces objectifs, l'article utilise certains fonctions des paquets tidyr et dplyr qui sont traités de manière plus approfondies dans les articles :

Prérequis

L'article s'adresse à un public débutant dans l'importation et l'exportation des données avec un langage de programmation et ne requière donc pas de conniassances préalables particulières. Les articles suivantes peuvent néanmoins fournir des informations utiles avant de suivre les contenus présentés dans cette page :

De plus, il est conseillé de disposer du logiciel RStudio qui facilite certaines opérations à travers une interface graphique, bien qu'au final, l'importation se fait directement avec du code.

Bonnes pratiques générales

Nous proposons ici une liste de bonnes pratiques générales au sujet des données dans des projets de recherche. Il s'agit de quelques recommandations de base, qui peuvent être par la suite complexifiées et adaptées selon les besoins des projets. À ce propos, des ressources plus spécifiques, depuis lesquelles la plupart de ces recommandations sont tirées d'ailleurs, sont proposées à la fin de cet article.

Nommer et organiser les dossiers qui contiennent les fichiers avec données

Une première bonne pratique consiste à garder tous les fichiers qui contiennent des données dans le même répertoire d'un projet, par exemple dans un dossier qui s'appelle data. Il est bien que ce dossier soit placé à la racine du dossier qui contient votre projet (e.g. le dossier de travail dans un projet RStudio. Ensuite, ce dossier peut contenir deux autres sous-dossiers :

  • Un dossier pour les données brutes, au du moins les plus brutes possibles.
  • Un dossier pour les données transformées pour des finalités de partage ou d'archivage

Une arborescence possible du dossier contenant les données serait donc :

|- data
  |- raw
     |- fichier-avec-donnes-brutes.extension
     |- autre-fichier-avec-donnes-brutes.extension
  |- transformed
     |- fichier-final.extension
     |- autre-fichier-final.extension

Nous proposons ici les noms des dossiers raw et transformed, mais d'autres solutions sont envisageables. Si possible, le dossier avec les données brutes devrait apparaître avant le dossier avec les données finalisées.

Des ultérieurs sous-dossiers pour mieux organiser les données sont envisageables, mais conseillées seulement avec un grand nombre de fichiers et des relations sémantiques qui suggèrent une sous-division (e.g. plusieurs études/expériences dans un projet, dont chaque avec beaucoup de fichiers différents). Autrement, il est plus simple d'insérer les fichiers directement dans les dossiers, avec des bonnes stratégies de nommage (voir sous-section suivante).

Dossier avec les données brutes

Dans ce dossier, insérez les fichiers avec des données avec le moins de manipulations préalables possible au niveau de leur contenu. Vous pouvez par contre modifier le nom du fichier (voir plus bas).

L'un des intérêts d'utiliser un langage de programmation pour analyser des données consiste à pouvoir tracer, documenter et automatiser les transformations effectuées sur des données. Pour cette raison, le moins de manipulations sont faites en dehors de R (e.g. renommer une colonne, effacer des données, corriger des fautes, ...), le plus votre processus de transformation des données sera transparent.

Si vous comptez partager à la fois les données brutes et finalisées de votre projet, pensez néanmoins à enlever toutes les informations sensibles même dans les fichiers du dossier raw ou équivalent. Vous pouvez par exemple ajouter un troisième dossier private qu'il faudra par la suite éviter de partager, par exemple en l'ignorant dans un système de gestion de versions.

|- data
  |- private
    |- ...
  |- raw
    |- ...
  |- transformed
    |-

De cette manière, vous pouvez créer deux flux de transformations séquentiels :

private --> [scripts privées] --> raw --> [scripts publics] --> transformed

Lors du partage de votre projet, vous pouvez ainsi partager seulement le dossier raw, les scripts de transformations pour passer de raw à transformed, et enfin le dossier transformed.

Au contraire, le dossier private et les scripts de transformations pour passer de private à raw (e.g. anonymisation automatisée des données), ne seront pas partagé avec le reste du projet.

Dossier avec les données finalisées

Le dossier avec les données finalisées contient les différentes sources de données utilisées pour les analyses de votre projet. Ces fichiers sont générée automatiquement à travers des scripts de R et donc exportées à chaque fois que vous lancez les scripts de transformations. De cette manière, vous êtes certain-es de disposer toujours de la dernière version des fichiers finalisées, avec les données utilisées vraiment dans vos analyses.

Le dossier avec les données finalisées peut contenir plus des fichiers par rapport au dossier avec les données brutes. Cela s'explique par le fait que, parfois, on utilise deux versions de la même source, par exemple avec des filtres différents, selon le type d'analyse à faire.

Imaginez une situation dans laquelle les participant-es à une étude doivent effectuer une tâche de type performance et ensuite passer un questionnaire en ligne. Vous pouvez décider de mener une analyse sur tous les questionnaires, mais une deuxième analyse seulement sur les questionnaires des participants en fonction de leur résultats à la tâche performance.

Dans le script de R, vous pouvez lancer ces deux analyses sans avoir à dupliquer les données, car il suffit d'assigner tous les questionnaires à une référence symbolique, et utiliser une autre référence symbolique pour les questionnaires filtrés. En revanche, si d'autres chercheurs veulent contrôler ou répéter votre analyse avec des outils différents de R, il peut-être utile de leur mettre à disposition deux fichiers différents :

  1. Un avec toutes les réponses au questionnaire
  2. L'autre avec seulement les questionnaires filtrés par rapport au résultat de la tâche

Nommer les fichiers qui contiennent les données

Un fichier dispose d'un nom et d'une extension, dans le format nom-du-fichier.extension. Cette partie s'intéresse au nom du fichier, tandis que l'extension, qui détermine le format du fichier, est traitée dans une section plus loin.

Jenny Bryan propose trois critères pour trouver des bons noms de fichiers qui contiennent des données :

  1. Nom qui soit lisible par des machines (machine-readable)
  2. Nom qui soit lisible par des êtres humains (human-readable)
  3. Nom qui s'intègre bien avec les mécanismes de triage des différents systèmes d'exploitations

Nom du fichier lisible par des machines

Les ordinateurs sont des machines qui excellent dans ce qu'on appelle la reconnaissance des patterns, c'est-à-dire l'extraction de régularités depuis une information donnée. Dans l'importation des données avec du code, le nom du fichier, ainsi que le chemin dans lequel se trouve le fichier, sont des informations importantes qui sont utilisées directement dans le code source. Par conséquent, on peut adopter des conventions qui facilitent la reconnaissance des patterns des machines. Ces conventions permettent :

  • De minimiser les erreurs dues au pointage incorrecte à des fichiers
    Ce type d'erreur peut-être réduit en premier lieu avec l'utilisation d'un projet en RStudio pour consolider les chemins indépendamment de la position des fichiers dans l'ordinateur ou du système d'exploitation. Deuxièmement, pour les machines tout est codé dans une série de chiffre. Donc pour un ordinateur les lettres a minuscule et A majuscule n'ont pas de relation particulière, il s'agit au final de deux chiffres différentes. Pour éviter des erreurs, il est donc conseillé de :
    • Utiliser seulement des lettres minuscules, à moins de conventions établies dans le domaine (e.g. abréviation du nom d'un pays tout en majuscules) ;
    • Évitez les espaces dans les noms des fichiers
    • Évitez les accents ou tout caractère spéciaal à l'exception de - et _
  • De passer dans le nom du fichier des informations exploitables dans la programmation
    Imaginez par exemple d'extraire depuis un outil de mesure plusieurs données pour un même participant, mais sans pouvoir insérer dans l'outil à chaque fois l'identifiant du participant concerné. Vous vous retrouvez donc avec plusieurs fichiers qui ont la même structure, mais qui ne peuvent pas être associés à un participant ou à un autre. À ce moment, si vous utilisez un système de nommage bien articulé, vous pouvez laisser la structure originale de chaque fichier, et insérer le nom du participant dans le nom du fichier. Par exemple :
    • p01_physiological-data_2020-11-21.csv
    • p02_physiological-data_2020-11-22.csv
    Grâce à la segmentation régulière du fichier, on peut créer un script qui :
    • Importe chaque fichier individuellement
    • Extrait depuis chaque fichier le nom du participant et l'ajoute aux données du fichier en question
    • Combine toutes les données dans une seule jeu de données pour le traitement successif.

Nom du fichier lisible par des être humains

Les noms de fichier ne servent cependant pas seulement pour pointer le langage de programmation vers les données d'intérêt : ils sont utilisés également par les êtres humains afin de s'orienter et attribuer du sens aux contenus des projets. Par conséquent, il est important que le nom d'un fichier propose les caractéristiques suivantes :

  • Facile à lire
    Même si les êtres humains ne sont pas aussi performant que les ordinateurs dans la reconnaissance de pattern, le système visuel peut bénéficier d'indices pour guider l'attention et segmenter l'information. Les deux noms de fichiers suivants ne sont pas lus avec la même facilité :
    • ceciestunnomdefichiertreslongquinefacilitepaslesystemevisuel.csv
    • un-nom-de-fichier-aussi-long-mais-avec-une-segmentation-utile.csv
  • En rapport sémantique avec le contenu
    Le nom d'un fichier peut être un indice utile pour informer l'utilisateur (soi-même ou une autre personne) du contenu du fichier, c'est-à-dire ce qu'on peut s'attendre en ouvrant/utilisant le fichier. Pour créer des noms de fichiers sémantiques il est bien de se positionner à travers un troisième personne, ce qui évite notamment d'utiliser toutes des variantes possessives du type my-data.csv ou impersonnelles data1.csv

Prédisposition pour un ordre de triage

Enfin, il est utile de prédisposer les noms des fichiers pour qu'ils s'affichent dans un ordre spécifique dans le gestionnaire des fichiers, indépendamment du système d'exploitation utilisé. En effet, les systèmes d'exploitation peuvent avoir différentes manières de déterminer la précédence entre deux noms de fichiers.

Une stratégie utile à cet effet est celle de prévoir un système codifié au début du nom de fichier qui adopte un empan toujours de la même longueur. Cela peut être par exemple :

  • Une série progressive de chiffres
    À cet effet, il est bien d'utiliser des zéros au début pour créer un empan d'un nombre de chiffres proportionnels au nombre de fichiers qu'on peut s'attendre. Par exemple, si vous pensez avoir moins de 100 fichiers, alors la codification 01-..., 02-..., etc. est suffisante. Si non, il faut prévoir trois ou plus chiffres. Même si pensez avoir moins de 10 fichiers, il est plus sûr d'utiliser quand même un empan d'au moins deux chiffres.
  • Une date en format ISO 8601
    Si la date peut jouer un rôle important dans l'organisation de vos fichiers (e.g. données cumulatives, suivi longitudinal, ...), alors il est utile d'entamer les noms de vos fichiers avec une date au format ISO 8601, donc selon le pattern yyyy-mm-dd pour la date simple, par exemple 2021-01-17_....

Utiliser des formats de fichier ouverts

Un format de fichier correspond à une modalité spécifique d'enregistrer de l'information : c'est l'équivalent de la langue parlée par le fichier. Le format du fichier, reconnaissable à travers l'extension, détermine notamment avec quel(s) logiciel(s) il est possible d'encoder et décoder l'information stockée dans le fichier.

Les bonnes pratiques en termes de formats de fichiers suggèrent d'utiliser des formats :

  • Non-propriétaires, c'est-à-dire que le format appartient à une société ou institution spécifique qui en détient les droits intellectuelles
  • Non encryptés, c'est-à-dire qui ne nécessite pas d'un clé stockée en dehors du fichier pour décoder l'information
  • Non comprimés (à moins de nécessités particulières)
  • Adoptant des standards ouverts et documentés
  • Compatibles avec plusieurs systèmes d'exploitation
  • Compatibles avec différents logiciels sans perte d'information ou fonctionnalités
  • Fréquemment utilisés par la communauté scientifique de référence

Pour la plupart des utilisations fréquentes en sciences sociales, le format .csv est adéquat pour les données tabulaire ou rectangulaire (i.e., en colonnes et lignes). En alternative les formats .txt et .html peuvent aussi être utilisés.

Pour des structures emboîtés, les formats .json et .xml sont stables, ouverts et bien documentés.

Ajouter des fichiers avec des méta-données

Importer des données

Exporter des données

Ressources