Accueil

Traduction

Tutoriel Python - sommaire

Sommaire partiellement masqué - faites défiler !

Tutoriel Python - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Python : faire des statistiques et travailler avec les dates & heures

Quelques fonctions "statistiques" présentes dans le module standard

Sans aucune "importation" vous pouvez appliquer les fonctions sum(), max(), min() et sorted() à des listes de nombres.
Il s'agit en effet de fonctions natives (ou intégrées) c'est à dire disponibles dans le noyau de base de Python.

Commandes à saisir dans la console Python :

J'ai pu calculer la moyenne simple de la série : 50/5 = 10 en combinant les fonctions sum() & len().
Je peux dire grâce à la liste triée, que la médiane est 10 (élément du milieu dans la série ordonnée).

Module statistics

Créer une commande qui calcule la moyenne simple d'une série de notes, c'est facile. Par contre la programmation de la variance, de l'écart type c'est beaucoup plus compliqué. Donc ce module tombe à pic car il propose des fonctions de haut niveau ad hoc.

Commandes à saisir dans l'interpréteur

Pour importer le module statistics j'utilise la syntaxe : import nomModule as alias
Ainsi pour produire les commandes je dois employer la syntaxe : alias.fonction() L'emploi d'un alias n'a d'intérêt pour les modules dont le nom est compliqué et comme c'est le cas ici.

Syntaxes

mean(série) : fonction qui calcule la moyenne simple d'une série de notes.

La médiane est une valeur qui permet de partager une série numérique ordonnée en deux parties de même nombre ; syntaxe : median(série)

le mode désigne la valeur la plus représentée dans une série ; syntaxe : mode(série)

L’écart type est un indicateur de dispersion dans une série ; syntaxe : stdev(série)

Vous constatez ici, que pour les deux séries la moyenne est pratiquement la même (12,2 et 12,0).
Mais le premier élève est beaucoup plus irrégulier dans ses résultats que le second. Donc l'écart type est plus grand pour le premier que pour le second.
Je rappelle que l'écart type est la racine carrée de la variance. Il existe bien sûr la fonction variance() dans le module statistics.

Pour les mordus de statistiques, le module propose aussi des fonctions pour calculer la moyenne géométrique et la moyenne harmonique ...

Le module time

Le module "time" fournit entre autres la date et l'heure de votre système.

J'active le module time avec la syntaxe "import nomModule". Donc je suis obligé de préfixer les fonctions du nom du module.
La commande time.time() retourne un nombre qui est le "timestamp" : le nombre de secondes entre le 1er janvier 1970 et l'instant présent. Le timestamp est une notion que l'on retrouve dans pratiquement tous les langages.

La commande time.localtime() affiche la date et l'heure système d'une façon plus claire.

Vous voyez donc que j'ai utilisé l'interpréteur le 8 janvier 2021.

time.strftime("%A %d %B %Y") : affichage de la date système avec le format habituel pour un Français : nomJour, rangJour, nomMois, anneé
time.strftime("%H : %M : %S") : affiche de l'heure du système avec un formatage : heures:minutes:secondes

Les symboles de formatage à utiliser avec cette fonction :

SymboleSens
%ANom du jour de la semaine
%dJour du mois
%BNom du mois
%YAnnée
%HHeureq
%MMinutes
%SSecondes

time.sleep(20) : mise en pause durant 20 secondes. Vous constatez qu'après avoir appuyé sur ENTER les triples chevrons sont invisibles et le curseur clignote. Au bout de 30 secondes, les chevrons réapparaissent.
Cette fonction ne présente pas beaucoup d'intérêt en mode commande par contre en mode programmé une temporisation peut être parfois souhaitable.

Le module datetime

Le plus souvent vous utiliserez plutôt le module datetime.
Le module datetime comprend trois méthodes importantes : date(), datetime(), time() respectivement pour créer une date, une heure, un instant (date & heure).

Commandes pour vous familiariser avec la syntaxe

J'ai importe le module datetime avec un alias : dt.
Nous avons dans ce module trois fonctions importantes : date(), time() & datetime(). Tiens tiens ... , la fonction "time()" ça vous dit rien ?

Analyse de cette batterie de commandes

La fonction date(Y,M,D) crée un objet avec la date précisée par les trois arguments. On peut appliquer à cet objet les propriétés : year,month, day.
La fonction time() crée un objet avec l'heure précisée avec jusqu'à trois arguments (heure, minute,seconde). Pour produire l'heure de minuit (00:00:00) il suffit d'utiliser la méthode time sans argument.
On peut appliquer à une heure les propriétés : hour, minute, seconde.
La méthode date() suivie de today() retourne la date du jour.
La fonction datetime() suivie de now() retourne l'instant présent : date et heure courantes.
On retrouve dans le module datetime la méthode strftime() que nous avions déjà utilisé avec le module time
Je ne reviens pas sur les symboles de formatage. Je précise simplement que la méthode retourne une chaine !

Danger

Dans le module "time" il y a la fonction "time()" et dans le module "datetime" il existe aussi une fonction "time()".
La première retourne le "timestamp" tandis que la seconde permet de produire un horaire.
Donc vous voyez que le risque d'ambiguïte entre deux fonctions appartenant à deux modules importés est bien réel. D'où l'intérêt de l'activation d'un module avec la syntaxe : "import nomModule as alias".
Maintenant il faut relativiser, on se sert davantage du module "datetime" que du module "time" ...

Calcul d'une durée en jours entre deux dates

Je vais maintenant vous montrer comment calculer la différence en jours entre deux dates.
Tapez la batterie de commandes suivantes :

j'importe le module datetime sous le pseudo "dt".
Je crée une date "jour_an" avec la méthode date(année,mois,jour).
Je crée une deuxième date avec toujours cette méthode.
Dans "intervalle" je calcule la durée en jours entre ces deux dates.
La variable "intervalle" est un objet timedelta de la classe datetime.