Python 3
Python 3
Python 3
1 Introduction générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Python-modules 1
1.1.1 les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.2 les chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.3 les listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.4 modification des listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Lindentation, for, while, if 4
1.2.0.1 Comment choisir entre boucle for et boucle while . . . . . . . . . . . . . . . 5
1.2.0.2 Les instructions break et continue, et la clause else dans les boucles 7
1.2.0.3 La clause else dans une boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Vecteurs, matrices et tableaux 9
1.4 Tracé de courbes 12
1.4.1 Création d’une courbe : Utilisation de plot() . . . . . . . . . . . . . . . . . . . . . 12
1.5 Le module statistics python 15
1.5.1 Calcul de la moyenne, la médiane, la variance, et le mode . . . . . . . 16
1.5.2 Les quantile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6 Fréquence, histogramme 17
1.7 Lois de probabilités 17
1.7.1 lois discrètes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.7.2 loi continues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2 Statistiques descriptives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1 histogrammes et densités 20
2.1.1 Tracer un diagramme en bâtons avec Matplotlib . . . . . . . . . . . . . . . . . 20
2.2 histogramme 22
Liste des tableaux
Table des figures
Introduction générale
1.1 Python-modules
Pour commencer avec python 3 , dans la fenêtre de saisie, on importe certains outils appelés
modules qui vont nous permettre de faire des statistiques et des graphiques. Ainsi, dans la fenêtre
de saisie, on écrit :
1. matplotlib est un module offrant une bibliothèque complète pour créer des visualisations
statiques, animées et interactives.
2. scipy est un module offrant un grand nombre de lois de probabilité, et doutils statistiques.
3. It’s an open language. A Python script doesn’t need to be compiled in order to be executed,
unlike languages such as C or C++.
4. numpy est un module offrant des fonctions mathématiques complètes, des générateurs de
nombres aléatoires, et diverses routines dalgèbre linéaire.
5. pylab est un module permettant dutiliser de manière aisée les modules NumPy et matplotlib.
6. pandas est un module offrant des structures de données adaptées à lanalyse statistique et
des fonctions facilitant laccès aux données, lorganisation des données et la manipulation
1.1 Python-modules 2
des données.
7. scipy est un module offrant un grand nombre de lois de probabilité, et doutils statistiques.
8. seaborn est un module offrant une interface de haut niveau et concise pour lobtention de
graphiques statistiques informatifs et attractifs.
9. statistics est un module offrant des fonctions pour calculer des statistiques mathématiques
de données numériques (à valeur réelle).
10. statsmodels est un module offrant des classes et des fonctions pour lestimation de divers
modèles statistiques, pour les tests statistiques et pour lexploration des données. Pour une
description détaillée de ces modules, on peut faire, par exemple : help(scipy).
bon
jo
≫ ”bon jour”[−1 :: −1];
ruo jnob
Méthodes propres
len(s) : renvoie la taille dune chaîne,
s.find : recherche une sous-chaîne dans la chaîne,
s.rstrip : enlève les espaces de fin,
s.replace : remplace une chaîne par une autre,
[1, 2, 3]
L2
[4, 5]
≫ L1 + L2
[1, 2, 3, 4, 5]
len(L) : renvoie la taille de la liste L,
L.sort : trie la liste L,
L.append : ajoute un élément à la fin de la liste L,
L.reverse : inverse la liste L,
L.index : recherche un élément dans la liste L,
L.remove : retire un élément de la liste L,
L.pop : retire le dernier élément de la liste L
L.append(9)
La boucle conditionnelle
La forme générale dune boucle conditionnelle est
while < test1 >:
< blocs dinstructions 1 >
if < test2 > : break
if < test3 > : continue
else :
< blocs dinstructions 2 >
où lon a utilisé les méthodes suivantes :
break : sort de la boucle sans passer par else,
continue : remonte au début de la boucle,
pass : ne fait rien.
La structure finale else est optionnelle. Elle signifie que linstruction est lancée si et seulement si
la boucle se termine normalement.
Example
x=1
while x < 10 :
print("x a pour valeur", x)
x = x∗2
print("Fin")
Affichage après exécution :
x a pour valeur 1
x a pour valeur 2
x a pour valeur 4
x a pour valeur 8
Le mot-clé while signifie tant que en anglais. Le corps de la boucle (cest-à-dire le bloc dins-
tructions indentées) sera répété tant que la condition est vraie. Dans lexemple ci-dessus, x sera
multiplié par 2 tant que sa valeur reste inférieure à 10.
Remarque : Si la condition est fausse au départ, le corps de la boucle nest jamais exécuté. Si la
condition reste toujours vraie, alors le corps de la boucle est répété indéfiniment.
i=0
while i < 4 :
print("i a pour valeur", i)
i = i+1
boucle inconditionnelle
La forme générale dune boucle inconditionnelle est
for < cible > in < ob jet > :
< blocs dinstructions 1 >
if < test1 > : break
if < test2 > : continue
else :
< blocs dinstructions 2 >
Quelques exemples :
Exapmle 1 :
for i in [0, 1, 2, 3] :
print("i a pour valeur", i)
Affichage après exécution :
i a pour valeur 0
i a pour valeur 1
i a pour valeur 2
i a pour valeur 3
Exapmle 2 :
Rappel : La fonction len() renvoie le nombre déléments : c = [”ROOMS”, ”MF”, ”MSS”, ”ANALY SE”, ”RO”]
len(c)
5
1.2 Lindentation, for, while, if 7
1.2.0.2 Les instructions break et continue, et la clause else dans les boucles
Linstruction break
Linstruction break permet de « casser » lexécution dune boucle (while ou for). Elle fait sortir de
la boucle et passer à linstruction suivante.
Exemple :
for i in range(10) :
print("debut iteration", i)
print("bonjour")
if i == 2 :
break
print("fin iteration", i)
print("apres la boucle")
debut iteration 0
bonjour
fin iteration 0
debut iteration 1
bonjour
fin iteration 1
debut iteration 2
bonjour
apres la boucle
Note :Dans le cas de boucles imbriquées, linstruction break ne fait sortir que de la boucle la plus
interne.
Linstruction continue
Linstruction continue permet de passer prématurément au tour de boucle suivant. Elle fait
continuer sur la prochaine itération de la boucle.
Linstruction continue permet de passer prématurément au tour de boucle suivant. Elle fait
continuer sur la prochaine itération de la boucle.
Exemple :
for i in range(4) :
print("debut iteration", i)
print("bonjour")
if i < 2 :
continue
1.2 Lindentation, for, while, if 8
print("fin iteration", i)
print("apres la boucle")
Affichage après exécution :
debut iteration 0
bonjour
debut iteration 1
bonjour
debut iteration 2
bonjour
fin iteration 2
debut iteration 3
bonjour
fin iteration 3
apres la boucle
La clause else dans un boucle permet de définir un bloc dinstructions qui sera exécuté à la fin
seulement si la boucle sest déroulée complétement sans être interrompue par un break.
Autrement dit, le bloc de la clause else est exécuté lorsque la boucle se termine par épuisement
de la liste (avec for) ou quand la condition devient fausse (avec while), mais pas quand la boucle
est interrompue par un break. Ceci est illustré dans la boucle suivante, qui recherche des nombres
premiers :
for n in range(2, 8) :
for x in range(2, n) :
if n%x == 0 :
print(n, "egale", x, "*", n/x)
break
else :
print(n, "est un nombre premier")
Nous limiterons notre étude aux tableaux (uni,bi)-dimensionnels. En Python modifier une
donnée dune extraction dun tableau entraîne aussi une modification du tableau initial ! Si néces-
saire la fonction np.copy(a) ou a.copy() permet de faire une copie dun tableau a.
a = np.array([1, 2, 3, 4, 5])
c = np.array([1, 2, 3, 4, 5])
b = a[1 : 3]
b
array([2, 3])
b[1] = 0
a
array([1, 2, 0, 4, 5]) a modifié
b = c[1 : 3].copy() première méthode
b[1] = 0 bb = np.copy(c[1 : 3]) seconde méthode
b[1] = 0
c
array([1, 2, 3, 4, 5]) c non modifié
la fonction arange
1.3 Vecteurs, matrices et tableaux 10
a = np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a[2 : 9 : 3] [début :fin :pas]
array([2, 5, 8])
a[2 : 8 : 3] le dernier élément n’est pas inclus
array([2, 5])
a[: 5] le dernier élément n’est pas inclus
array([0, 1, 2, 3, 4]
la fonction linspace(premier,dernier,n) renvoie un array commençant par premier, se terminant
par dernier avec n éléments régulièrement espacés.
np.linspace(1., 4., 6)
array([1., 1.6, 2.2, 2.8, 3.4, 4.])
Numpy propose le redimensionnement dun tableau avec la fonction reshape. Il faut tout de même
respecter une condition : le nombre déléments doit être le même ! :
a = np.arange(16)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
a.reshape(4, 4)
array([[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10, 11],
[12, 13, 14, 15]])
a.reshape(2, 8)
array([[0, 1, 2, 3, 4, 5, 6, 7],
[8, 9, 10, 11, 12, 13, 14, 15]])
Matrices particulières
np.zeros(n)((n, p)) vecteur nul de taille n, matrice nulle de taille n, p
np.eye(n)((n, p)) matrice de taille n, (n, p) avec des 1 sur la diagonale et des zéros ailleurs
np.ones(n)((n, p)) vecteur de taille n, matrice de taille n, p remplie de 1
np.diag(v) matrice diagonale dont la diagonale est le vecteur v
np.diag(v, k) matrice dont la diagonale décalée de k est le vecteur v (k est un entier relatif)
np.random.rand(n)((n, p)) vecteur (taille n), matrice (taille n, p) à coefficients aléatoires uni-
formes sur [0, 1].
Matrices : Opérations
Lopérateur * ne fait que multiplier terme à terme deux tableaux de même dimension :
4 ∗ np.ones((4, 4)) ∗ np.diag([2, 3, 4., 5])
array([[8., 0., 0., 0.],
[0., 12., 0., 0.],
1.3 Vecteurs, matrices et tableaux 11
Le "slicing" permet dextraire des éléments dun vecteur ou matrice. Il existe aussi la com-
mande np.take qui extrait lignes/colonnes dun array. Loption axis détermine une extraction selon
les lignes/colonnes. La syntaxe se comprend aisément.
a = np.arange(16).reshape(4, 4)
a.take([0, 3], axis = 1) array([[0, 3],
[4, 7],
[8, 11],
[12, 15]])
fig, ax = plt.subplots()
ax.plot([1, 3, 4, 6], [2, 3, 5, 1])
plt.show() affiche la figure à l’écran
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 3, 4, 6], [2, 3, 5, 1])
plt.show() affiche la figure à l’écran
Exemple 3 :
Dans cet exemple, nous allons tracer la fonction cosinus.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 ∗ np.pi, 30)
y = np.cos(x)
plt.plot(x, y)
plt.show() affiche la figure à l’écran
xlim(xmin, xmax)
ylim(ymin, ymax)
axis() permet de fixer simultanément les domaines des abscisses et des ordonnées.
Avec axis(), les limites du domaine doivent être données dans une liste où les valeurs sont
entourées par des crochets [et].
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 ∗ np.pi, 30)
y = np.cos(x)
plt.plot(x, y)
plt.xlim(-1, 5)
plt.show()
Ajout d’un titre, legend, Labels sur les axes - xlabel() et ylabel() - title()
Dans le style pyplot, on peut ajouter un titre grâce à linstruction title().
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 ∗ np.pi, 30)
y = np.cos(x)
plt.plot(x, y)
plt.xlabel("abscisses")
plt.ylabel("ordonnées")
plt.title("Fonction cosinus")
plt.legend()
plt.show()
1.4 Tracé de courbes 14
Formats de courbes :
Il est possible de préciser la couleur, le style de ligne et de symbole (marker) en ajoutant une
chaîne de caractères de la façon suivante :
Exemple :
r red rouge
c cyan cyan
m magenta magenta
y yellow jaune
k black noir
w white blanc
Statistiques descriptives
htp
Example 3 :
Méthode de base améliorée : on peut ajouter autant de catégories que désiré (+ tracé d’une
légende) Categories = [”Echantillon1”, ”Echantillon2”, ”Echantillon3”] 3 échantillons
Sous − categories = [′ Qualit ′ ,′ Environnement ′ ,′ Social ′ ,′ Bien − tre′ ] comparés selon 4 critères
Valeurs pour chaque catégories
import math
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import pylab
categories = [”Echantillon1”, ”Echantillon2”, ”Echantillon3”]
sous − categories = [′ Qualit ′ ,′ Environnement ′ ,′ Social ′ ,′ Bien − tre′ ]
y1 = [1, 2, 5, 2]
y2 = [1, 6, 4, 2]
y3 = [1, 6, 4, 2]
nb − categories = len(y1)
largeur − barre = 0.2
2.2 histogramme 22
x1 = range(len(y1))
x2 = [i + largeur − barre f oriinx1]
x3 = [i + 2 ∗ largeur − barre f oriinx1]
plt.bar(x1, y1, width = largeur − barre, color =′ red ′ , edgecolor =′ black′ , linewidth = 2)
plt.bar(x2, y2, width = largeur − barre, color =′ blue′ , edgecolor =′ black′ , linewidth = 2)
plt.bar(x3, y3, width = largeur − barre, color =′ green′ , edgecolor =′ black′ , linewidth = 2)
pylab.xticks(x1, sous − categories, rotation = 40)
plt.legend(categories, loc = 2)
plt.show()
plt.save f ig(′ baton2.png′ )
Resultats :
2.2 histogramme
Soit un ensemble de nombre réels. Dans la plupart des cas les échantillons sont construit :
soit à partir de simulation successive de v.a (ex : v.a gaussienne) soit à partir d’observations (ex :
tailles des gens dans la rue). Dresser l’histogramme dun échantillon consiste à découper les réel
en sous-interavalles, puis d’afficher des batons qui ont pour base ces sous-intervallse, et comme
hauteur le nombre d’élément de l’échantillon contenu dans chaque sous-intervalles.
Example :
import math
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import pylab
2.2 histogramme 23
x = [1, 2, 2, 3, 4, 4, 4, 4, 4, 5, 5]
plt.hist(x, range = (0, 5), bins = 5, color = ’yellow’, edgecolor = ’red’)
plt.xlabel(’valeurs’)
plt.ylabel(’nombres’)
plt.title(’Exemple dh́istogramme simple’)
plt.savefig(’b3.png’)
Example 3 :
import math
import numpy as np
import matplotlib.pyplot as plt
x=[1, 3, 4, 6]
la loi beta
nbData=10000
X1=np.random.beta(3,1,size=nbData)
X2=np.random.beta(2,3,size=nbData)
X3=np.random.beta(1,0.5,size=nbData)
plt.hist([X1,X2,X3],bins=20,label=["a=3,b=1","a=2,b=3","a=1,b=0.5"]) ;
plt.legend()
plt.savefig(’b4.png’)
2.2 histogramme 24