In [9]:
%run correctiontp.ipynb

Les données au format .csv

Une recherche sur wikipedia nous donne : “Comma-separated values, connu sous le sigle CSV, est un format texte ouvert représentant des données tabulaires sous forme de valeurs séparées par des virgules.” “Un fichier CSV est un fichier texte, par opposition aux formats dits « binaires ». Chaque ligne du texte correspond à une ligne du tableau et les virgules correspondent aux séparations entre les colonnes. Les portions de texte séparées par une virgule correspondent ainsi aux contenus des cellules du tableau.”

Dans la pratique le séparateur peut être : une virgule, un point-virgule, une tabulation, … En particulier le séparateur peut être différent en fonction du pays d'origine des données.

On peut trouver ce type de données sur le site data.gouv (données publiques de l’État et des administrations). Vous pouvez visiter la page https://doc.data.gouv.fr pour plus d'informations.

TP n° 1 : Recherche dans une table

On se donne le programme suivant:

In [2]:
def creationListe(filename):
    """Fonction qui construit une liste à partir
    d'une table d'un fichier filename """
    liste=[]
    f=open(filename,"r")
    test=True
    ligne=f.readline()
    while test==True:
        ligne=f.readline()
        if ligne!="":
            liste.append(ligne.split(","))
        else:
            test=False
    f.close()
    return liste

Partie A : (Avec le fichier « eleves.csv »)

  1. A l'aide de ce programme, faire afficher en console le contenu du fichier « eleves.csv » .
  1. Écrire une fonction communeEleve(filename,com), qui renvoie la liste des noms des élèves habitant dans la ville « com ».
In [3]:
communeEleve("eleves.csv","flers")
Out[3]:
['Robert', 'Maule', 'Jourdan', 'Louville', 'Escobar', 'Dupain']
  1. Écrire une fonction ageEleve(filename,ag), qui renvoie la liste des prénoms des élèves ayant pour age « ag ».
In [4]:
ageEleve("eleves.csv",17)
Out[4]:
['Kévin', 'Julien', 'Jules', 'Antoine', 'Léonie', 'Lisa']

Partie B : (Avec le fichier « commune.csv »)

  1. Écrire une fonction intervalle(filename,minimum,maximum), qui affiche le nom des communes ayant une population comprise entre la valeur minimum et la valeur maximum.
In [5]:
intervalle("communes.csv",300000,500000)
nice
toulouse
lyon
  1. Écrire une fonction chercheVille(filename,ville) qui affiche le département et la superficie de la ville.
In [6]:
chercheVille("communes.csv","caen")
 La ville de caen est dans le département 14.
 Sa superficie est de 25.7km².
  1. Compléter la ligne 7 de la fonction somme(filename) qui additionne les populations de l’ensemble des communes.
In [7]:
def somme(filename):
    f=open(filename,"r")
    somme=0
    ligne=f.readline()
    ligne=f.readline()
    while ligne!="":
        somme+=""" Votre code"""
        ligne=f.readline()
    f.close()
    print(somme)
In [10]:
somme("communes.csv")
62463976
  1. Écrire une fonction sommedep(filename,codedep) qui affiche la population globale du département « codedep ».
In [30]:
sommedep("communes.csv",61)
291642
  1. Écrire une fonction altitudeVille(filename,alti) qui affiche le nom des communes ayant une altitude maximale supérieure à « alti ».

Remarque : La méthode .strip() pourra être utilisée (voir help(str.strip)).

Partie C : (Avec les deux fichiers)

On veut construire une fonction recherche(filename1,filename2) qui prend en argument les deux fichiers et qui donne le département et la superficie des communes des élèves de la classe.

Remarque 1 : On ne doit pas afficher de doublon.

Remarque 2 : Les élèves de la classe vivent dans l'Orne.

In [35]:
recherche("communes.csv","eleves.csv")
 La ville de athis de l orne est dans le département 61.
 Sa superficie est de 32.47km².
 La ville de flers est dans le département 61.
 Sa superficie est de 21.15km².
 La ville de briouze est dans le département 61.
 Sa superficie est de 17.15km².
 La ville de cahan est dans le département 61.
 Sa superficie est de 5.87km².
 La ville de saint georges des groseillers est dans le département 61.
 Sa superficie est de 7.06km².
 La ville de sainte honorine la chardonne est dans le département 61.
 Sa superficie est de 14.4km².