TP2 : Traitement de données avec un programme en Python¶

Nous allons utiliser Pyzo, il faut donc commencer par lancer le programme.¶

Récupérer des fichiers csv en ligne.¶

Nous aurons besoin de deux modules pour ce notebook :

  • Le module csv pour manipuler des fichiers csv

  • Le module requests pour importer des fichiers directement depuis une url

Le module csv est installé nativement dans Python 3, mais pour le module requests, il va falloir l'installer. Pour cela, tapez, puis validez la ligne suivante dans l'interpréteur :

pip install requests

Normalement, le module devrait s'installer tout seul.

Copiez/collez le programme ci-dessous qui télécharge le fichier lycee.csv, le "transfert" dans une liste Python et affiche sa première ligne :

In [ ]:
#import des modules
import csv
import requests

# Importation des données au format CSV
url = "https://nsirenoir.fr/snt/lycee.csv"
csvfile = requests.get(url)
csvfile = csvfile.content.decode('utf-8')
etablissement = list(csv.reader(csvfile.splitlines(), delimiter=','))

print(etablissement[0])
print(etablissement[1])
print(etablissement[2])

Repérer les différents descripteurs.¶

Quels sont les différents descripteurs de ce fichier ?

Dans ce programme, chaque ligne du fichier csv est copiée dans une liste Python et l'ensemble de ces listes est regroupé dans la liste nommée etablissement. La variable etablissement est donc une liste de listes.

Pour repérer un établissement, il faut connaître sa ligne dans le fichier et donc son indice dans la liste

Attention : Le 1er élément d'une liste a pour indice 0.

Quel est l'indice du descripteur 'code_postal_uai' ?

Par exemple en appelant dans l'interpréteur :etablissement[47], on peut lire l'"appellation officielle" de l'établissement se trouvant à la ligne 47. On lit que c'est : "Lycée professionnel privé Saint Joseph"

On peut ensuite récupérer chaque donnée d'un établissement en indiquant de nouveau l'indice correspondant au descripteur cherché.

Par exemple, l'attribut 'numero_uai' est le 1er attribut, il a donc pour indice 0. Pour trouver le 'numero_uai' de l'établissement précédent, il faut alors saisir : etablissement[47][0]

Quelle est l'"appellation officielle" et la "localite d'acheminement uai" de l'établissement repéré par la ligne 35 ? Que faut-il saisir en Python pour avoir ces 2 renseignements ?

Faire une recherche à partir d'un critère.¶

Le numéro UAI de notre lycée est : 0060009C

Nous allons parcourir la liste des établissements et nous afficherons la ligne correspondant à notre lycée

Copiez et exécutez le programme ci-dessous :

In [ ]:
#import des modules
import csv
import requests

# Importation des données au format CSV
url = "https://nsirenoir.fr/snt/lycee.csv"
csvfile = requests.get(url)
csvfile = csvfile.content.decode('utf-8')
etablissement = list(csv.reader(csvfile.splitlines(), delimiter=','))

for ligne in etablissement:
    if ligne[0] == '0060009C':
        print(ligne)

On peut améliorer l'affichage :

In [ ]:
#import des modules
import csv
import requests

# Importation des données au format CSV
url = "https://nsirenoir.fr/snt/lycee.csv"
csvfile = requests.get(url)
csvfile = csvfile.content.decode('utf-8')
etablissement = list(csv.reader(csvfile.splitlines(), delimiter = ','))

for ligne in etablissement:
    if ligne[0] == '0060009C':
        print(ligne[1])
        print(ligne[7],ligne[5])
        print(ligne[8])
        print(ligne[9])

Afficher tous les établissements d'une ville¶

On crée maintenant une fonction qui permet d'afficher tous les établissements d'une ville :

In [ ]:
#import des modules
import csv
import requests

# Importation des données au format CSV
url = "https://nsirenoir.fr/snt/lycee.csv"
csvfile = requests.get(url)
csvfile = csvfile.content.decode('utf-8')
etablissement = list(csv.reader(csvfile.splitlines(), delimiter=','))


def etablissements_ville(ville):
    for ligne in etablissement:
        if ligne[9] == ville:
            print(ligne[1])
            print(ligne[7],ligne[5])
            print('________________________')

Que faut-il saisir pour obtenir les établissements de "CAGNES SUR MER" ?

Quel est la rue du dernier établissement qui s'affiche ?

Pourquoi le lycée n'apparaît pas ? Modifier la ligne 14 avec le code : if ville in ligne[9] : et refaire l'essai.

Ajouter une ligne à la fonction pour que le nom de la ville et son code postal soit affiché.

À faire :¶

Compléter le programme précédent pour rajouter à l'affichage l'information se trouvant sur : 'secteur_public_prive_libe' Le 2nd établissement de la ville de 'LA CRAU' est-il public ou privé ?

Modifier la fonction précédente pour qu'elle prenne 2 paramètres : ville et secteur. Elle devra afficher uniquement les établissements publics ou les établissements privés d'une ville.

Par exemple : etablissements_ville('CAGNES SUR MER', 'Privé') doit afficher 3 établissements (indiquez leur nom).

À faire :¶

En vous aidant de la fonction précédente, écrire la fonction etablissement_nom qui prend en paramètre un nom d'établissement et qui affiche tous les établissements portant ce nom avec leur "numéro uai" . Combien d'établissements portent le même nom que notre lycée ? Quel est leur numéro uai ?