Adloun

Lire un fichier à colonnes variables

Exercice · informatique (tronc commun des prépas scientifiques), chapitre 4 — Modules, fichiers et données

É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()

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.