Pour mon prochain cours en Informatique appliquée à l’histoire, j’ai développé la séquence pédagogique suivante. D’abord ouvrir QGIS et entrer dans la boîte des coordonnées en bas le mot «World» puis appuyer sur Entrée.

Une carte du monde apparaît. Dans le menu défilant des outils de sélection, choisir «Sélectionner par expression».

Utiliser une expression pour sélectionner tous les pays situés sur le continent africain.


Sauvegarder les entités sélectionnées dans une nouvelle couche.

Exporter la nouvelle couche en format XLSX.

Ouvrir ce fichier dans Excel. En maintenant la touche Contrôle enfoncée, cliquer sur l’en-tête des colonnes J, T et AS pour les sélectionner, soit les colonnes contenant les noms des pays, un estimé de la population et le PIB.

Dans le ruban Insérer, choisir un «graphique à barres combos» et prendre la deuxième option suggérée (vous pourriez bien sûr modifier vous-mêmes le graphique).

Le résultat donne ceci, qui met en valeur la relation pouvant exister entre deux types de données, soit ici la population et le PIB.

Vous pouvez ensuite copier-coller le graphique dans un document Word.
Retournons dans QGIS et exportons à nouveau notre couche Afrique, mais cette fois vers le format CSV (comma separated value). Si l’on souhaite conserver la géométrie (ce n’est toutefois pas nécessaire pour le présent article), on prendra soin de choisir des polygones pour la géométrie et de définir cette dernière dans le format WKT (well known text).

Si on ouvre le fichier csv dans l’application Bloc-notes, on voit toutes les valeurs dans les diverses colonnes, séparées uniquement par des virgules.

Pas très claire pour la lecture, mais très compact quand on veut échanger ce type de données. Pour y voir plus clair, utilisons Python. Dans la console, commençons par nous positionner dans le répertoire qui contient notre csv.
#importer le module pour travailler avec le système de l'ordinateur: import os #importer le module pour travailler avec des fichiers csv: import csv #bien que la commande ne soit pas tout à fait la même, on reconnaît ici la logique que nous avions vue dans le précédent article pour changer de répertoire avec l'invite de commande dans Windows: os.chdir('C:/Users/Tristan/Desktop/Afrika') #la commande se lit ainsi : ch(ange)dir(ectory) #on remarquera les barres obliques qui vont vers l'avant, ce qui est différent de ce que l'on obtient quand on copie le chemin d'accès dans le bureau; on aurait aussi pu faire deux barres obliques inverses (\\). Dans tous les cas, on ne peut malheureusement pas faire un simple copier-coller. F = open('afrikaagain.csv') #je crée une variable (F) qui ouvre virtuellement mon fichier. L = csv.reader(F) #je crée une nouvelle variable (L) qui se sert d'une fonction dans le module csv de Python pour lire mon fichier (soit ici la variable F pour fichier). #si mon fichier ne contenait que quelques colonnes et quelques lignes, je pourrais déjà les afficher avec cette ligne de code: D = list(L) #mais si je fais ceci, vu que ma table est trop grande, j'obtiens cela:

Pour pouvoir afficher toute ma table, je peux utiliser l’index pour interroger des colonnes et des rangées spécifiques, par exemple le contenu de la première rangée et de la deuxième colonne (on se souvient que Python commence à compter à zéro, comme la plupart des langages, sauf R, qui est d’ailleurs conçu pour lire des feuilles de calcul).

Ou encore la deuxième rangée et toutes les colonnes entre 2 et 11:

Je pourrais aussi écrire une boucle pour afficher ma table, même si elle très grande:
#ma boucle doit pouvoir passer à travers toute la table, une rangée (row) à la fois. Je commence donc par ouvrir en mode lecture (r) mon fichier en définissant une nouvelle variable (AfrikaF, pour le fichier qui contient mes données): with open('afrikaagain.csv', 'r') as AfrikaF: AfrikaL = csv.reader(AfrikaF) #je crée une nouvelle variable qui lit avec le module csv ma précédente variable for row in AfrikaL: #je crée une boucle qui réitère chaque rangée print (row) #et imprime le contenu de chacune

Supposons que j’ai mille fichiers csv que je voudrais combiner. Ce serait long de le faire manuellement. Mais je pourrais écrire en quelques lignes un programme Python qui le ferait pour moi.
import os import glob # le module qu'on a déjà vu qui permet de sélectionner plusieurs fichiers selon leur extension, ici .csv. import pandas as pd #un module permettant la manipulation et l'analyse des données os.chdir('C:/Users/Tristan/Desktop/Afrika') extension = 'csv' tous_les_csv = [i for i in glob.glob('*.{}'.format(extension))] #on a donc sélectionné tous les fichiers .csv, maintenant on va les combiner: combined_csv = pd.concat([pd.read_csv(f) for f in tous_les_csv ]) #et on exporte enfin vers un nouveau fichier csv, en lui donnant un nom et en spécifiant l'encodage (utf-8) pour éviter les problèmes avec les langues qui, comme le français, ont des accents: combined_csv.to_csv( "combined_csv.csv", index=False, encoding='utf-8-sig')
J’ai emprunté ce code ici.
Dernier exercice avec des tables d’attributs que l’on va, cette fois, animer! En supposant qu’une de vos feuilles de données (qu’elle soit en Excel ou csv) contienne une colonne avec des dates ou même des dates et des heures, il est possible de l’animer avec l’extension TimeManager. Il faudrait d’abord importer vos données comme couche vectorielle.

Nous allons tricher un peu ici et utiliser une couche Shapefile contenant une table des attributs qui est, au fond, organisée comme une feuille de calcul. J’ai emprunté ce qui suit ici à Ujaval Gandhi, qui est d’ailleurs génial et je vous encourage à aller voir la liste de ses tutoriels (malheureusement pour la plupart en anglais).
Retournons à QGIS. Importons la couche «ASM events» qu’on peut télécharger ici. C’est une table d’attributs qui contient des événements de piraterie dans le monde. Dans la symbologie, choisir «carte de chaleur», une palette de couleur, un rayon de 5mm et une transparence de 75%.

Installer dans le gestionnaire d’extensions TimeManager et afficher cette dernière.

Cliquer sur le bouton Settings.

Cliquer sur ajouter une couche.

Choisir la couche et la colonne qui contient les dates des événements (dateofocc).

Cliquer OK, puis choisir une année par «time frame»:

Cliquer sur le bouton «play», et voilà! Nous verrons dans un prochain cours comment ensuite exporter le résultat vers un GIF animé avec GIMP.

Le seul hic avec TimeManager, c’est que ça fonctionne comme un charme tant que la base de données est propre, mais au moindre bruit (et c’est vrai pour tous les outils d’analyse de base de données) ou encore si les dates ne sont pas dans le bon format, ça plante. C’est quand même un super outil à connaître quand on est historien.
2 commentaires
2 Pingbacks