Comptage et moyenne avec Python
Généralement, les premières informations que l’on souhaite extraire des données sont les agrégats tels que comptage, somme et moyenne.
Parmi les milliers (?) de moyens de les obtenir : Python.
Et là, tout dépend du cadre dans lequel on travaille. Si c’est en milieu professionnel, on utilise une bibliothèque, par exemple pandas. C’est très simple. En revanche, si l’on est en cours de NSI, en classe de première, on se situe dans une problématique de pédagogie : on n’emploie aucune bibliothèque particulière (sauf éventuellement pour lire le fichier) et il faut s’appuyer sur une boucle for. C’est plus long. Mais comme le but de cette page est pédagogique…
Données
Notre jeu de données est un fichier CSV de personnalités nées au dix-neuvième siècle dans l’empire russe. Quatre colonnes : son nom, le principal domaine pour lequel elle est célèbre, son année de naissance et l’âge auquel elle est décédée.
Nom,Domaine,Naissance,Décès
Lénine,politique,1870,53
Trotski,politique,1879,60
Khrouchtchev,politique,1894,77
Pavlov,médecine,1849,86
Tolstoï,littérature,1828,82
Dostoïevski,littérature,1821,59
Tourgueniev,littérature,1818,64
Gorki,littérature,1868,68
Chagall,peinture,1887,97
Malevitch,peinture,1879,56
Kandinsky,peinture,1866,78
Prokofiev,musique,1891,61
Stravinsky,musique,1882,88
Zadkine,sculpture,1888,79
Mendeleïev,chimie,1834,72

Le processus d’importation est décrit en page de recherche avec Python.
Comptage
Comptons le nombre de personnalités. Le script est écrit sous forme de fonction, comme c’est souvent l’usage en classe de première, et nous n’indiquons ni le script d’importation, ni celui d’impression.
- L’une des façons est simplement de créer une liste (personnalites) et de chercher sa longueur avec len().
def compter_total(personnalites):
return len(personnalites)
- Une autre consiste à utiliser une boucle. C’est la version algorithmique qui montre le fonctionnement.
def compter_total(personnalites):
compteur = 0
for personne in personnalites:
compteur += 1
return compteur

Comptons à présent le nombre de personnalités par domaine d’activité.
def compter_domaines(personnalites):
compteur = {}
for personne in personnalites:
domaine = personne["Domaine"]
if domaine not in compteur:
compteur[domaine] = 0
compteur[domaine] += 1
return compteur
Ici, la condition sert à initialiser la clé avant de compter. Par exemple, la première fois que Python voit littérature, il commence à compter : compteur["litterature"] = 0. La deuxième fois, "litterature" est déjà dans le dictionnaire, donc on saute le if.
Moyenne
Nos données ne se prêtent pas à des additions mais si l’on sait coder une moyenne, on sait coder une somme puisqu’une moyenne n’est autre qu’une somme divisée par un effectif. Par conséquent, calculons l’âge de décès moyen.
def age_moyen(personnalites):
somme = 0
compteur = 0
for personne in personnalites:
somme += int(personne["Décès"])
compteur += 1
return somme / compteur
Pas de difficulté particulière. Développons ce script pour obtenir l’âge moyen par domaine de compétence.
On regroupe par domaine, puis on calcule les moyennes.
def age_moyen_par_domaine(personnalites):
stats = {}
for personne in personnalites:
domaine = personne["Domaine"]
age = int(personne["Décès"])
if domaine not in stats:
stats[domaine] = {"somme": 0, "compteur": 0}
stats[domaine]["somme"] += age
stats[domaine]["compteur"] += 1
resultats = {}
for domaine in stats:
somme = stats[domaine]["somme"]
compteur = stats[domaine]["compteur"]
resultats[domaine] = somme / compteur
return resultats
