Déroulé du projet

Activité 1 : Choix du jeu de donnés

Vous choisirez, parmi les sites d'Open-Data français, un jeu de données, au format .CSV (ou qui peut être rapidement transformé en .CSV), qui comporte au moins ces attributs là :

  • une localisation précise de l'objet, événement ; c'est à dire une latitude et une longitude.

  • un jeu d'une taille de plusieurs centaines d'enregistrements.

Une fois déterminé, vous ouvrirez ce jeu avec un tableur et en ferait une synthèse sur votre document LibreOffice :

  • nombre d'enregistrement, moyenne,...

  • nombre d'attributs,

  • attributs qui vont vous intéresser à utiliser...

ComplémentActivité 2 : nettoyage du jeu avec Python

En fonction du jeu choisi, il se peut que des données ne soient pas complètes, précises, justes... ou nécessite des ajustements.

Vous prendrez donc la peine de retravailler ces données en utilisant vos connaissances acquises dans le thème « Traitement de données en table ».

Tout les codes utilisés seront à mettre dans l'archive à rendre, mais aussi dans votre document final.

Activité 3 : Importer ce jeu dans DBBrowser

Importer ce jeu de données dans une base de données Sqlite3 dont l'extension sera .sqlite3.

Pour cela, vous pouvez suivre ce tutoriel :

Utilisation de DB Browser for SQLite pour importer un jeu de données en Open-DataInformations[1]

Activité 4 : Requêtes SQL

  • Écrire des scénarios de requêtes et réaliser ces requêtes dans l'interface de DBBrowser.

    Exemple : combien y a-t-il de lycée en France ? et dans le Rhône ? Combien d'accidents à Paris ?

  • Retrouver également, via des agrégats, les informations trouvées sur le tableur : nombre d'enregistrements, moyenne...

  • Ne pas hésiter à utiliser des ALIAS

  • Noter l'ensemble de ces informations sur votre document numérique.

Activité 5 : Utiliser Python pour accéder à une base de données SQLite3

Le module sqlite3 permet à un programme Python de se connecter à une base de données.

Voici un programme Python3 minimal pour ce besoin :

1
# Import du module
2
import sqlite3
3
4
# CONSTANTE
5
6
7
# Connexion à la Base de données SQLlite
8
connexion_BD = sqlite3.connect(FICHIER_BDD)
9
c = connexion_BD.cursor()
10
11
####################
12
# Programme Principal
13
#####################
14
15
#Exécution de la requête
16
c.execute(MA_REQUETE)
17
18
liste_data = c.fetchall()	#Récupération des résultats de la requête sour forme de liste
19
print("J'ai {} enregistrements dans ma base de données.".format(len(liste_data)))

Comprendre ce programme et le compléter afin qu’il interroge la base de données précédemment créée et que le terminal affiche la bonne valeur.

Activité 6 : Exploitation visuelle du jeu de données

On souhaite exploiter ces données visuellement sur une carte géographique (exemple ci-contre) avec des marqueurs pour placer les événements (ici des accidents) ou des objets. Le fond de carte utilisé sera basé sur des tuiles de la base de données OpenStreetMap dont voici une présentation succincte.

Accidents de vélo à MillauInformations[2]

Méthode

Chaque marqueur nécessite au moins 2 informations : une latitude et une longitude (d'où le choix du jeu de données avec ces 2 attributs).

Nous allons utiliser le module Python folium pour ce travail. La documentation est disponible ici : https://python-visualization.github.io/folium/. Il s'installe via PIP avec la commande suivante :

1
sudo pip3 install folium

Pour fonctionner, il faut 3 choses :

  1. Importer le module folium

  2. Un objet carte que l'on créera avec l'instruction folium.Map()

  3. Un ensemble de marqueurs que l'on créera avec l'instruction folium.Marker() qui faudra rajouter à la carte via la méthode add_to().

MéthodeCréation de l'objet carte

En utilisant la documentation du module folium, créer une fonction creation_carte() définissant la carte.

Les 2 autres arguments seront :

  1. location (pour centrer la carte sur un point, il s'agit d'un tuple, on pourra choisir 46.396, 2.505)

  2. zoom_start (pour connaître le zoom de départ : entier compris entre 1 et 19)

Cet objet carte sera affiché dans un fichier html avec la méthode .save(nom_fichier_carte.html)

Vérifier le résultat dans le fichier HTML généré automatiquement dans le dossier.

AttentionLicence ODbL

Pour respecter la licence Open Database License (ODbL) des données OpenStreetMap qui s'affiche sur la carte, vous devez définir un argument à la carte attr (attribut fixé à '© Contributeurs OpenStreetMap'). Ajoutez cette licence à la carte.

MéthodeManipulation des marqueurs

Ajout d'un marqueur

Au sein de la fonction précédente, rajouter un marqueur au centre de votre carte en complétant la méthode folium.Marker().

Personnalisation d'un marqueur

En lisant la documentation du module folium, personnaliser la couleur et le picto au centre du marqueur.

ExempleAjout des marqueurs d'une liste exemple

Soit la liste d'événements suivante :

1
Liste = [
2
('eve1', 44.29, 2.519),
3
('eve2', 44.339, 2.105),
4
('eve3', 43.855, 2.838),
5
('eve4', 44.332, 2.787),
6
('eve5', 44.126, 3.253),
7
('eve6', 44.484, 2.496),
8
('eve7', 44.316, 2.585),
9
('eve8', 43.849, 2.899),
10
('eve9', 44.366, 2.04199),
11
('eve10', 43.933, 2.664)
12
]

Modifier la fonction creation_carte() pour faire en sorte que chaque événement soit un marqueur sur la carte. Liste pourra être un paramètre de la fonction.

Créer une carte complète

Créer une carte avec vos ‘vraies' données. Vous pourrez éventuellement vous limiter dans un espace géographique.

Y a-t-il des problèmes ? Identifiez-les et corrigez les éventuellement... N'oubliez pas de tout noter sur votre document...

Activité 7 : Joindre des tables

Dans vos jeux de données, vous n'avez peut-être pas des noms de communes, départements ou autre...

Aussi, on va pouvoir ajouter d'autres jeux de données à notre base de données, tels que :

Vous pouvez choisir d'autres jeux de données pour compléter votre base intiale.

Proposez de nouvelles requêtes et donc de nouvelles cartes HTML qui affichent des résultats avec la prise en compte de ces nouvelles tables à joindre.

Ne pas oublier de préciser sur vos documents où se fait la jointure.

Activité 8 : Amélioration ergonomique et graphique

Dans la mesure de vos compétences en HTML / Python, améliorer votre projet pour qu'il soit plus joli à consulter... notamment en programmant une interface graphique. Vous pourrez utiliser pour cela pySimpleGUI ou tkinter.