Archives mensuelles : mars 2020

Des fichiers Excel au SQL, bonnes pratiques avec Excel et LibreOffice Calc

Cet article, ainsi que Des fichiers Excel au SQL, introduction aux bases de données relationnelles a été publié à la suite de la séance du 10 février 2020 du séminaire Outils du Quanti en SHS : Des fichiers Excel au SQL, introduction aux bases de données relationnelles .

Qu’est ce qu’une base de données ?

D’après Wikidata, une base de données informatique est une collection organisée de données (voir Outline of databases). Dans cette introduction aux bases de données, nous ne parlerons que de données “brutes” tabulaires, sous forme de tableaux.

Qu’est ce qu’une donnée “brute” ? Le nom de l’officier qui introduit la fraise blanche du Chili en France, sa date et ville de naissance, la liste des pays ayant produit plus de 50.000 tonnes de fraises en 2016, la liste des membres de votre club d’aviron avec leur adresse et leur numéro de téléphone, la température de l’eau sur la plage de Trégana un 21 juillet sont des données “brutes”.

Les tableurs, la forme la plus courante de stockage de données brutes

Les formes les plus courantes de bases de données tabulaires sont les fichiers Microsoft Excel ou LibreOffice Calc. Excel et Calc sont des tableurs, ils servent à manipuler des feuilles de calcul. Ces logiciels sont conçus pour calculer des sommes, des moyennes, des écarts-types, réaliser des tests du χ², des graphiques.

Si vous souhaitez vous servir d’Excel pour stocker la liste des livres écrits en breton du moyen-âge à nos jours avec leur date de publication, leur maison d’édition, leur auteur, la date et le lieu de naissance des auteurs, les collectifs fréquentés par ces auteurs et que vous souhaitez répondre à des questions telles que : Quelle est l’année où le plus d’œuvres en breton ont été publiées ? Quels sont les maisons d’éditions ayant publié les livres des femmes membres de l’Union régionaliste bretonne et de l’Académie des inscriptions et belles lettres ? Quels sont les collectifs dont les membres originaires de Quimperlé ont le plus publié entre 1895 et 1934 ? Même s’il est possible de répondre à certaines de ces questions avec des filtres ou des formules d’Excel ou de Calc, ces tableurs vont vite trouver leurs limites.

Pour répondre à ces questions, il faut passer à une autre forme de bases de données : les bases de données relationnelles et leur langage associé : le SQL.

Mais commençons par aborder les bonnes pratiques qui permettront l’exploitation de fichiers Excel, voire leur versement sans douleur dans une base de données relationnelle.

Bonnes pratiques avec Excel et LibreOffice Calc

La saisie dans Excel étant très permissive, on a tendance à y saisir de l’information sans se soucier de son exploitation. Tel des écureuils qui feraient moult provisions pour l’hiver sans jamais consommer.

Quelles sont les erreurs de saisie à éviter ? Comment passer de la saisie d’informations à la saisie de données exploitables ? Comment préparer l’exploitation et la diffusion de nos données ?

Aidez-vous des filtres pour contrôler les valeurs saisies

Premièrement, il est bon de contrôler régulièrement si l’on a pas fait d’erreur de saisie. Par exemple, vérifier que l’on a pas saisi des prénom dans une colonne Date. Pour avoir un aperçu rapide des valeurs saisies dans les colonnes d’un fichier Excel, sélectionnez la ligne du titre des colonnes puis allez dans le menu Données > AutoFiltre (LibreOffice) ou Données > Filtre (Microsoft Excel, voir la vidéo). Attention, pour que le filtre fonctionne correctement, votre tableau doit être exempt de lignes vides.

Prenons l’exemple l’inventaire du fonds Yves Berthou conservé au Centre de recherche bretonne et celtique : 72262_Inventaire-CRBC-Fonds-Yves-Berthou.xls (le fichier a été zippé). Le filtre permet de se rendre compte que certaines dates ne sont pas au format jj/mm/aaaa. Certaines dates respectent en apparence ce format mais la ligne de saisie permet (la zone dans laquelle vous pouvez saisir des formules) de se rendre compte qu’elles sont précédées d’une cédille (ex. ’31/10/1897).

Une colonne = Une donnée

Mieux vaut saisir dans deux colonnes séparées les dates de naissance et de décès d’une personne plutôt que dans une seule colonne (en les séparant par ex. avec un tiret : 04/07/1682-14/10/1773) et si vous voulez rajouter des commentaires pour préciser par exemple que la date de naissance est inconnue ou citer la source, faites-le dans une colonne dédiée.

Conservez les données sources et utilisez les formats de données

Si vous saisissez des dates, par exemple, vous ne pourrez les exploiter que si elles respectent le format recommandé par Excel, votre logiciel ou votre langage de programmation (R, Python). Autrement dit, Excel ne pourra pas dessiner un graphique avec des dates telles que “date inconnue” ou 13 vendémiaire an IV. Si votre source d’information (par exemple, un manuscrit du XIVe siècle) nécessite un reformatage des dates, créez deux colonnes : une pour la saisie de la date telle qu’elle apparaît dans la source (ex. en toutes lettres : le 3 juillet 1896) et une autre pour la date au format jj/mm/aaaa, voire au format ISO 8601 (aaaa-mm-jj ou aaaa-mm ou aaaa) qui permet la saisie de dates incomplètes.

Pour vous aidez à respecter ces règles, appliquez un format à vos colonnes et utilisez la validation des données. Pour appliquer un format aux colonnes (Nombre, Monétaire, Date, etc.) : Clic droit sur une colonne puis Format de cellule (Excel) ou Formater les cellules (LibreOffice). Pour la validation des données, allez dans le menu Données puis Validation des données (Excel, voir la vidéo) ou Validité (LibreOffice, voir la documentation).

Utilisez des normes et des référentiels internationaux

Afin de faciliter la diffusion de vos données à des collègues ou à un public plus large, utilisez des normes et des référentiels. En effet, les normes ou référentiels vous permettront de désambiguïser vos données (des communes françaises ou des individus portent le même nom, comment les distinguer ?) et de les rendre compréhensibles par des non francophones.

Par exemple, si vous souhaitez saisir la langue d’un document, utilisez la norme ISO 639-3 qui définit des identifiants sur trois lettres pour toutes les langues humaines connues, mortes ou vivantes. En signalant aux utilisateurs que vous utilisez cette norme, il leur suffira de se reporter aux tables de correspondance en ligne pour savoir à quelles langues vous faites référence.

Pour les communes françaises, en plus de leur nom, utilisez les codes INSEE plutôt que les codes postaux car ces derniers peuvent parfois regrouper plusieurs communes. Vous les trouverez sur les pages Wikipédia ou Wikidata des communes concernées. Par exemple, saisissez Quimper (29232) et non pas Quimper (29000).

Excel permet d’attribuer un type aux données saisies dans chaque colonne, notamment le type Date. Mais une date correspondant forcément à un jour, un mois, une année (ex. le 14 juillet 1789), le format Date de Excel ne permet pas la saisie de “dates” incomplètes, par ex. une année ou le mois d’une année donnée (juillet 1789). Pour ce type de données temporelles, gardez le type de colonne par défaut et saisissez vos dates au format ISO 8601, qui permet la saisie d’une année (1789) , du mois d’une année (1789-07) ou d’une date complète (1789-07-14). Ce format permettra également de trier ces “dates” par ordre chronologique.

Pour les noms de personnes connues, utilisez la forme internationale signalée dans les notices de la BnF. Par exemple, la forme internationale de Théodore Hersart de la Villemarqué est La Villemarqué, Théodore Hersart vicomte de (1815-1895). L’écrivain et poète Victor Hugo (auteur du roman Les misérables) a pour forme internationale Hugo, Victor (1802-1885). Ce qui permet de le distinguer de son homonyme chanteur de salsa.

Un autre moyen très efficace pour désambiguïser des lieux et des individus est de créer un colonne dédiée à la saisie du lien vers leur notice sur Wikidata, la plus importante base de connaissance libre et gratuite mondiale. Par exemple, la notice de Victor Hugo (l’écrivain) est https://www.wikidata.org/wiki/Q535.

Voici une liste non exhaustive de normes et de référentiels. Si vous en voyez d’autres, n’hésitez pas à les signaler en commentaire.

Type de données Normes ou référentiels Exemples
Langues norme ISO 639-3 fre, eng, ita, lat
Dates norme ISO 8601 2020-08-13
Communes françaises codes INSEE (disponibles sur les pages Wkipédia ou Wikidata des communes)
Individus et collectifs (entreprises, associations, etc.) IdRef, le catalogue de la BnF, Wikidata
Tout le reste Wikidata

Si vous n’arrivez pas à vous décider pour un référentiel, utilisez les identifiants de Wikidata. Cette base de connaissance, hébergée par la Wikimédia Foundation, propose des notices sur n’importe quel sujet, Victor Hugo (Q535), le zinc (Q758), la ville de Brest (Q12193), les pangolins (Q9027425). Ces pages Wikidata sont liées à de nombreux référentiels. Une fois que vous aurez trouvé le référentiel adéquat, vous pourrez toujours utiliser le logiciel OpenRefine pour récupérer l’identifiant dans le référentiel retenu à partir de l’identifiant Wikidata.

Utiliser le même caractère pour séparer les valeurs multiples

Il est parfois nécessaire de saisir plusieurs valeurs dans la même cellule. Par ex. toutes les langues parlées par la même personne. Utilisez le même caractère pour les séparer. Évidemment, il vaut mieux choisir un caractère que l’on ne risque pas de retrouver dans dans les valeurs à séparer. Par exemple, le symbole ¤ (Alt Gr + $) est un caractère peu utilisé.

Exploitez le plus tôt possible vos données

Même si vos données sont incomplètes, commencez le plus tôt possible à vérifier si les données que vous saisissez sont conformes au format attendu par vos logiciels d’analyse ou de visualisation de données. Par exemple, pour l’affichage d’une frise chronologique avec Timeline.js, il faut des événements avec une année ou une date complète. Pas la peine donc de saisir dans la colonne qui vous servira à faire la frise des dates du type “mai 1978” ou “un jour de juin”, indications à réserver pour une colonne de commentaires au sujet de la date de l’événement.

Nettoyez vos données avec OpenRefine

Au cours de la saisie, vous pouvez introduire des erreurs comme rajouter des espaces en trop ou saisir la même valeur de différentes manières (Saint-Malo, St-Malo, St. Malo). Pour corriger ces problèmes, utilisez le logiciel libre et gratuit OpenRefine.

Documentez vos données

Les titres des colonnes ne suffisent pas toujours à comprendre leur contenu. Joignez à votre fichier .xls ou .ods un fichier texte avec des informations en utilisant le schéma de métadonnées Dublin Core ou la spécification Table Schema.

Sauvegardez vos données

Il faut parfois des mois, voire des années pour constituer un corpus de données. Telles que les données de l’historien Philippe Jarnoux au sujet des bagnards de Brest retranscrites à partir des registres conservés au Service historique de la défense et consultables en ligne sur la biblithèque numérique du CRBC. Perdre ces données à cause d’un disque dur défectueux peut s’avérer catastrophique.Or il existe des solutions de stockage en ligne pour la communauté de la recherche.

Les universités proposent sur leur ENT (espace numérique de travail) des solutions de stockage. Tels que Google Drive et UBOCloud (basé sur le logiciel libre NextCloud) à l’Université de Bretagne Occidentale.

La DSI du CNRS propose à tous les personnels des unités CNRS la solution de sauvegarde MyCORE (basée sur le logiciel libre OwnCloud), qui permet de synchroniser des répertoires d’un ordinateur personnel avec un stockage en ligne.

Huma-Num propose gratuitement à la communauté de la recherche en sciences humaines et sociales les espaces de stockage ShareDocs (avec des fonctionnalités similaires à Google Drive, soit l’édition de fichiers bureautiques, le partage de dossiers avec ou sans mot de passe; accès possible par le protocole WebDAV), Nakala (pour le dépôt de fichiers publics ou privés avec obligation de saisie de métadonnées au format Dublin Core; les métadonnées peuvent être interrogées à travers un SPARQL endpoint; un identifiant pérenne est attribué à chaque fichier; service d’affichage des images selon le protocole IIIF) et Huma-Num Box (pour le stockage “en vrac” de gros volumes de données, accès par le protocole SFTP).

Une alternative aux tableurs : les bases de données relationnelles

Les tableurs, s’ils sont utilisés en respectant quelques bonnes pratiques, peuvent convenir pour la saisie de données peu structurées. Mais si la structure des données se complique, par exemple quand on souhaite étudier comme c’est le cas du projet PRELIB1 (Projet de recherche en littérature de langue bretonne), les raisons sociologiques qui ont conduit des individus à écrire en breton en créant une base de données contenant des information sur les auteurs (non, date et lieu de naissance/décès, etc.), leur participation à des collectifs, leur production littéraire, la publication de leurs œuvres sous forme de livre ou dans des revues; dans ce cas, il faut passer aux bases de données relationnelles.

Pour en savoir plus, lisez le billet Des fichiers Excel au SQL, introduction aux bases de données relationnelles.

  1. Nelly Blanchard, Jean-Baptiste Pressac et Mannaig Thomas, « PRELIB, base de données sur les acteurs du domaine littéraire en langue bretonne »Lengas [En ligne], 84 | 2018, mis en ligne le 15 juillet 2018, consulté le 27 mars 2020. URL : http://journals.openedition.org/lengas/1754 ; DOI : https://doi.org/10.4000/lengas.1754 []