É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.