Adloun

Écrire manquantes par colonne(table) , qui compte les valeurs vides…

Exercice d'entraînement · niveau 1 (application) · NSI (première), chapitre 6 — Traiter des données en tables · Importer, convertir, contrôler

Énoncé

Écrire manquantes_par_colonne(table), qui compte les valeurs vides par colonne. L'appliquer à un fichier troué et interpréter.

Corrigé


def manquantes_par_colonne(table):
    """Nombre de valeurs vides ou absentes, colonne par colonne.

    Postcondition : rend {} sur une table vide ; sinon un compteur pour
                    chaque descripteur, entre 0 et len(table).
    """
    if len(table) == 0:
        return {}
    compteur = {c: 0 for c in table[0]}
    for ligne in table:
        for c, v in ligne.items():
            if v is None or v == "":
                compteur[c] = compteur[c] + 1
    return compteur

Sur un fichier de quatre lignes dont trois portent des trous : {'nom': 1, 'classe': 1, 'moyenne': 2}.

Ce que le décompte oriente. Une colonne à trous sur ne se traite pas comme une colonne à trou sur . Dans le premier cas, la colonne est inutilisable ; dans le second, écarter la ligne fautive ne coûte rien. C'est le décompte qui permet de choisir — et il doit figurer dans le rapport, comme le demande la piste de projet.

Attention au if v. Écrire if not v au lieu de if v is None or v == "" compterait aussi les et les comme manquants : en Python, le zéro est faux. Sur une colonne de notes, toutes les notes nulles seraient déclarées absentes.

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.