Adloun

informatique (tronc commun des prépas scientifiques) · Chapitre 4 · Exercice de TD

Lire un fichier à colonnes variables

Modules, fichiers et données · niveau 3 (difficile)

Énoncé

Un fichier stations.csv contient sur chaque ligne station;t1;t2;...;tk où le nombre de mesures de température varie selon les lignes. Écrire un lecteur qui renvoie pour chaque station son nombre de mesures, sa moyenne et son maximum. Tracer les résultats sous forme de diagramme en barres.

Corrigé

import matplotlib.pyplot as plt

def rapport_stations(nom_fichier: str) -> dict:
    rapport = {}
    with open(nom_fichier, "r") as f:
        for ligne in f:
            ligne = ligne.strip()
            if ligne == "":
                continue
            champs = ligne.split(";")
            nom = champs[0]
            # Conversion des éléments restants de la ligne
            mesures = [float(val) for val in champs[1:]]
            rapport[nom] = (len(mesures), sum(mesures) / len(mesures), max(mesures))
    return rapport

# Tracé graphique
rapport = rapport_stations("stations.csv")
stations = list(rapport)
moyennes = [rapport[st][1] for st in stations]

plt.bar(stations, moyennes)
plt.ylabel("Température moyenne (°C)")
plt.title("Relevé moyen par station")
plt.show()

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre