Aller au contenu

Partie 2 : Le traitement des données


Une fois les données structurées dans une table, on peut effectuer différentes opérations de traitement :

OpérationDescriptionExemple
RechercheTrouver un enregistrement précisTrouver l'élève dont le nom est "Dupont"
TriOrdonner les enregistrements selon un descripteurTrier les élèves par âge croissant
FiltreSélectionner les enregistrements répondant à un critèreGarder uniquement les élèves de Lyon
CalculEffectuer des opérations sur les valeursCalculer l'âge moyen des élèves
CroisementCombiner deux tables ayant un descripteur communCroiser une table d'élèves et une table de notes

Le module csv de Python permet de lire facilement des fichiers CSV :

import csv
# Lire un fichier CSV
with open("eleves.csv", "r", encoding="utf-8") as fichier:
lecteur = csv.DictReader(fichier, delimiter=";")
eleves = list(lecteur)
# Filtre : garder les élèves de Lyon
lyonnais = [e for e in eleves if e["Ville"] == "Lyon"]
# Tri : trier par âge croissant
eleves_tries = sorted(eleves, key=lambda e: int(e["Age"]))
# Calcul : âge moyen
ages = [int(e["Age"]) for e in eleves]
age_moyen = sum(ages) / len(ages)
print(f"Âge moyen : {age_moyen}")

On peut aussi lire un fichier CSV sans le module csv, en utilisant simplement open() pour ouvrir le fichier et split() pour découper chaque ligne :

# Ouvrir et lire le fichier ligne par ligne
with open("cinemas.csv", "r", encoding="utf-8") as fichier:
lignes = fichier.readlines()
# La première ligne contient les en-têtes
en_tetes = lignes[0].strip().split(";")
print("Colonnes :", en_tetes)
# Parcourir les lignes de données (à partir de la 2e ligne)
compteur_paris = 0
for ligne in lignes[1:]:
champs = ligne.strip().split(";")
departement = champs[2] # supposons que la colonne 2 est le département
if departement == "75":
compteur_paris += 1
print(f"Nombre de cinémas à Paris : {compteur_paris}")

Exemple concret : compter les cinémas par département

Section intitulée « Exemple concret : compter les cinémas par département »

Imaginons un fichier cinemas.csv contenant la liste des cinémas de France (disponible sur data.gouv.fr) avec les colonnes : nom, adresse, departement, commune, ecrans.

# Compter le nombre de cinémas par département
with open("cinemas.csv", "r", encoding="utf-8") as fichier:
lignes = fichier.readlines()
# Dictionnaire : département -> nombre de cinémas
cinemas_par_dept = {}
for ligne in lignes[1:]: # on saute la ligne d'en-tête
champs = ligne.strip().split(";")
dept = champs[2]
if dept in cinemas_par_dept:
cinemas_par_dept[dept] += 1
else:
cinemas_par_dept[dept] = 1
# Afficher les 5 départements ayant le plus de cinémas
classement = sorted(cinemas_par_dept.items(),
key=lambda x: x[1], reverse=True)
for dept, nb in classement[:5]:
print(f"Département {dept} : {nb} cinémas")

Lorsque les données contiennent des coordonnées géographiques (latitude, longitude), on peut les afficher sur une carte interactive grâce à la bibliothèque Python folium. Cela permet de croiser les données structurées avec la géolocalisation.

import folium
# Créer une carte centrée sur la France
carte = folium.Map(location=[46.6, 2.3], zoom_start=6)
# Ajouter un marqueur pour chaque cinéma (exemple simplifié)
folium.Marker(
location=[48.8566, 2.3522],
popup="Le Grand Rex - Paris"
).add_to(carte)
# Sauvegarder la carte au format HTML
carte.save("carte_cinemas.html")