Programmation avec
Python
ENSSEA 2024/2025
Enseignant : Dr. Hicham BELDJILLALI
ENSSEA
Tel: Kolea, Tipaza www.enssea.dz
Fax:
Sommaire
Table de Contenue
Présentation ________________________________________________________________ 1
Qu’est-ce que Python ? ______________________________________________________ 1
Pourquoi utiliser Python ? ____________________________________________________ 1
Anaconda_________________________________________________________________ 2
Python 2.x contre 3.x ________________________________________________________ 2
Opérations Fondamentales _____________________________________________________ 3
Commentaires _____________________________________________________________ 3
Noms des variables _________________________________________________________ 3
Déclarer plusieurs variables __________________________________________________ 3
Entiers (integer) et Réel (Float) ________________________________________________ 3
Opérations mathématiques ___________________________________________________ 4
Chaînes de caractères _______________________________________________________ 4
Tuples, listes et dictionnaires __________________________________________________ 5
Indexation ________________________________________________________________ 7
Trancher__________________________________________________________________ 8
Attention : copier des listes ____________________________________________________ 9
Sous liste ________________________________________________________________ 10
Calcule Matricielle _________________________________________________________ 10
CONDITIONS ______________________________________________________________ 12
Syntaxe __________________________________________________________________ 12
Example 1 ________________________________________________________________ 12
Example 2 ________________________________________________________________ 12
Example 3 ________________________________________________________________ 13
Example 4 ________________________________________________________________ 13
BOUCLES _________________________________________________________________ 14
Syntaxe While _____________________________________________________________ 14
Example _________________________________________________________________ 14
Syntaxe For_______________________________________________________________ 14
Sommaire
Example 1 ________________________________________________________________ 14
Example 2 ________________________________________________________________ 14
Example 3 ________________________________________________________________ 15
Example 4 ________________________________________________________________ 15
FONCTIONS _______________________________________________________________ 16
Syntaxe __________________________________________________________________ 16
Example 1 ________________________________________________________________ 16
Example 2 ________________________________________________________________ 16
LIRE ET ECRIRE DANS DES FICHIERS _________________________________________ 17
Afficher / définir le répertoire de travail _________________________________________ 19
Simulation et exportation d’une DataFrame ______________________________________ 19
INFORMATION DU FORMATEUR ______________________________________________ 21
Pg. 01 Présentation
Statistique est un
outil pour
Présentation
atteindre l’objectif
Qu’est-ce que Python ?
de la science.
Python est un langage de programmation à usage général. Comme R, il s'agit
d'un langage orienté objet de haut niveau. Contrairement à R, il n’a pas été
développé spécifiquement pour la pratique des statistiques. Cependant, un
certain nombre de packages utiles ont été développés en Python pour les
mathématiques, les statistiques et la Data science.
Pourquoi utiliser Python ?
Développé dans la communauté informatique, Python est largement utilisé pour
la science des données et l’apprentissage automatique. Quelques raisons pour
lesquelles vous pourriez utiliser Python plutôt que R :
• Vous souhaitez utiliser un package particulier en Python (par exemple
pandas, scikit-learn)
• Vous souhaitez intégrer votre code dans un projet (ex : un site internet)
déjà codé en Python
• Préférence personnelle : vous êtes plus à l'aise avec le codage en Python
(fonctionnalité, syntaxe)
• Vos collègues ou collaborateurs utilisent Python
Inconvénients :
• La documentation n'est pas géniale par rapport à R (mais reste plutôt
bonne)
• Travailler avec des données peut être un peu maladroit par rapport à R
Pg. 02 Présentation
Anaconda
La distribution Anaconda de Python est un moyen simple d'installer Python ainsi
que les packages les plus utiles.
Python 2.x contre 3.x
Il existe deux versions de Python largement prises en charge. Hormis quelques
légères différences de syntaxe (par exemple : si la fonction d'impression
nécessite des parenthèses), les différences pratiques sont généralement
minimes et sans importance. J'utilise Python 3 et je vous recommande de faire
de même, sauf si vous avez une raison préalable de faire autrement (travailler
avec du code Python plus ancien, collègues utilisant Python 2, etc.)
Hicham BELDJILLALI
Maitre de Conférence
January 8, 2025
Pg. 03 Opérations Fondamentales
Opérations Fondamentales
Commentaires
Les commentaires en Python utilisent # ; e.g.
# Ce code ne fait rien.
Noms des variables
Vous pouvez inclure des traits de soulignement et des chiffres dans les noms de
variables, mais pas de points1.
# pas de problème
ma_var = 0 ; var0 = 0
# problème
ma.variable = 0 ; 1variable = 0
Déclarer plusieurs variables
Petite astuce : vous pouvez déclarer ou définir plusieurs variables à la fois.
x , y = 5 , 10
Entiers (integer) et Réel (Float)
Comme R, il n’est généralement pas nécessaire de déclarer la classe d’un
nombre.
x = 5 ; y = 2,75 ; z = 8 / 3 ; print ( x , y , z )
5 2,75 2,6666666666666665
1 Le point est enregistré pour les méthodes sur les objets.
Pg. 04 Opérations Fondamentales
• La fonction int() transforme la classe d’une variable à un nombre entier.
• La fonction float() transforme la classe d’une variable à un nombre réel.
Opérations mathématiques
Le tableau suivant présente les différentes opérations mathématiques dans
Python, commençons par l’opération la plus prioritaire jusqu’à l’opération la
moins prioritaire :
Operateur Opération Exemple Résultats
** Puissance 2 ** 3 8
// Division entière/quotient à étages 22 // 8 2
/ Division 22 / 8 2.75
* Multiplication 3*5 15
% Modulus / reste 22 % 8 6
- Soustraction 5-2 3
+ Addition 2+2 4
Chaînes de caractères
Les chaînes de caractères dans Python peuvent être définies à l'aide de
guillemets simples ' ' ou de guillemets doubles " ".
'ENSSEA' ; "ENSSEA"
La fonction str() transforme la classe d’une variable à une chaine de caractère.
La fonction len() renvoie la longueur d'une chaîne :
x = 'engineer' ; print ( len ( x ))
8
Pg. 05 Opérations Fondamentales
On peut utiliser l’opérateur + pour concaténer des chaînes :
y = 'Statistic' ; z = x + 'al ' + y ; print ( z )
Statistical engineer
Pour dupliquer une variable de type chaine, on utilise l’opérateur * :
print ( 'ENSSEA_' * 3 )
ENSSEA_ENSSEA_ENSSEA_
Divisez une chaîne en utilisant la méthode split().
z = z . split ( ' ' ) ; print ( z )
['Statistical', 'engineer']
Vous pouvez également rejoindre une liste de chaînes en utilisant join().
x = [ 'Un' , 'deux' , 'rouge' , 'bleu' ]
x1 = ', ' .join ( x ) ; print ( x1 )
Un, deux, rouge, bleu
Tuples, listes et dictionnaires
Python dispose de plusieurs types de données différents pour combiner
plusieurs éléments en un seul objet.
# liste
x = [ 1 , 2 , 3 ]
# tuple
y = ( 4 , 5 , 6 )
# dictionnaire
z = { 'a' : 7 , 'b' : 8 , 'c' : 9 }
Pourquoi ces différentes structures de données ?
Pg. 06 Opérations Fondamentales
• Les listes sont simples et relativement faciles à utiliser.
• Les tuples occupent moins de mémoire que les listes, mais sont
immuables : une fois que vous en avez créé un, vous ne pouvez plus
apporter de modifications.
• Les dictionnaires permettent une indexation non numérique et sont
généralement plus rapides (recherches et récupération plus rapides).
Comme les chaînes, len() renvoie la longueur de ces objets.
print ( len ( x ), len ( y ), len ( z ))
3 3 3
Notamment, ces structures de données peuvent inclure tout type d’objet :
maliste = [ 1 , 'taco' , x , y , z ]
montuple = ( 1 , 'taco' , x , y , z )
mondictionnaire={ 0 : 1,1 : 'taco' ,2 : x ,3 : y,4 : z }
print ( maliste ) ; print ( montuple ) ;
print ( mondictionnaire )
[1, 'taco', [1, 2, 3], (4, 5, 6), {'a' : 7, 'b' : 8, 'c' : 9}]
(1, 'taco', [1, 2, 3], (4, 5, 6), {'a' : 7, 'b' : 8, 'c' : 9})
{0:1,1:'taco',2:[1, 2, 3],3:(4, 5, 6),4:{'a':7,'b':8,'c':9}}
Quelques méthodes utiles des dictionnaires :
z = { 'une' : 7 , 'b' : 8 , 'c' : 9 }
liste ( z . keys ())
['a', 'b', 'c']
liste ( z . values ())
[7, 8, 9]
liste ( z . items ())
[('a', 7), ('b', 8), ('c', 9)]
Pg. 07 Opérations Fondamentales
Indexation
Les éléments de liste et de tuple (et les sous-chaînes) sont accessibles par
index2. Python commence les index par 0 au lieu de 1.
# liste
x = [ 1 , 2 , 3 ]
# tuple
y = ( 4 , 5 , 6 )
# dictionnaire
z = { 'a' : 7 , 'b' : 8 , 'c' : 9 }
# chaîne
s = "sasquatch"
# imprimer un élément individuel de chaque objet
print ( x [ 0 ], y [ 2 ], z [ 'a' ], s [ 3 ])
1 6 7 q
Les index négatifs ne suppriment pas un élément d’une liste. C’est-à-dire, les
index négatifs vont dans l'autre sens, par exemple x[-1] est la dernière entrée
dans x, x[-2] est l'avant-dernière, etc.
X = [ 1 , 2 , 3 ]
print ( x [ 0 ], x [ 1 ], x [ 2 ])
print ( x [ - 1 ], x [ - 2 ], x [ - 3 ])
1 2 3
3 2 1
2 Les entrées du dictionnaire sont accessibles à l'aide des touches du dictionnaire.
Pg. 08 Opérations Fondamentales
Trancher
Sous-définissez une liste ou un tuple (ou une chaîne) en utilisant des crochets
et un deux-points. Considérez les index comme des murs séparant différentes
cases. Pour renvoyer le contenu de plusieurs cases, il faut donner les index des
murs extérieurs.
# Exemple :
x = [ 8 , 9 , 10 ]
print ( x [ 0 : 2 ], x [ 1 : 3 ])
[8, 9] [9, 10]
Notez que vous pouvez omettre les chiffres de chaque côté des deux points pour
étendre la tranche autant que possible.
print ( x [ 0 : 3 ], x [ - 3 :], x [:])
[8, 9, 10] [8, 9, 10] [8, 9, 10]
Le découpage fonctionne également avec des chaînes.
s = "sasquatch"
print ( s [ 0 : 6 ])
Sasqua
Accéder aux éléments non consécutifs est un peu délicat. Une façon d'y parvenir
est de comprendre une liste, dont je parlerai plus tard.
x = [ 2 , 4 , 6 , 8 ]
# prendre le sous-ensemble correspondant aux index 1 et 3
x_sub = [ x [ i ] for i in [ 1 , 3 ]]
print ( x_sub )
[4, 8]
Pg. 09 Opérations Fondamentales
Attention : copier des listes
Lorsque vous définissez une variable liste égale à une autre variable liste,
python économise de l'espace en pointant vers le même objet en mémoire. Cela
ne crée pas une copie unique de l'objet.
Si vous modifiez l'objet, les deux variables changeront.
# problème
x = [ 1 , 2 , 3 ]
y = x
y [ 0 ] = 10
print ( x )
[10, 2, 3]
Moyens sûrs de copier : découpez-le, utilisez list() ou utilisez la méthode copy()
x = [ 1 , 2 , 3 ]
# méthode 1
a = x [:]
# méthode 2
b = list ( x )
# méthode 3
c = x . copy ()
# apporter des modifications aux copies
a [ 0 ] = 10 ; b [ 1 ] = 20 ; c [ 2 ] = 30
print ( 'x: ' , x ) ; print ( 'a: ' , a )
print ( 'b: ' , b ) ; print ( 'c: ' , c )
x : [1, 2, 3]
a : [10, 2, 3]
b : [1, 20, 3]
c : [1, 2, 30]
Pg. 10 Opérations Fondamentales
Sous liste
Voici un ensemble d’exemples pour la création des sous listes avec python :
x = [2,4,6,8]
x_sub1 = [x[i] for i in [1,3]]
print(x_sub1)
x_sub2 = [x[i]>=6 for i in range(len(x))]
print(x_sub2)
x_squared = [i**2 for i in x]
print(x_squared)
y = [v for v in x if v > 5]
print(y)
Calcule Matricielle
Ici on va utiliser la bibliothèque numpy :
import numpy as np
np.pi
np.arange(10)
np.arange(0,3,0.2)
np.linspace(0,1,10)
x = np.array([1,2,3])
y = np.array([4,5,6])
print(x + y, x**2, (1/y).round(2))
print(np.exp(x), np.log(x))
# matrice des zeros
np.zeros([3,2])
# matrice des uns
np.ones([2,3])
# matrice diagonale
np.diag([1,2,3])
# creation matrice
M = np.array([1,2,2,4,3,6,4,8]).reshape(4,2)
print(M)
# concatemer avec les colonnes
C = np.array([3,6,9,12]).reshape(4,1)
Pg. 11 Opérations Fondamentales
M = np.concatenate([M,C],axis=1)
print(M)
# concatemer avec les lignes
L = np.array([5,10,15]).reshape(1,3)
M = np.concatenate([M,L],axis=0)
print(M)
# matrice transposée
M_Trans = M.T
print(M_Trans)
# produit matricielle
y1 = np.array([1,1,1]).reshape(3,1)
print(M.dot(y1))
y2 = np.array([1,1,1])
print(np.dot(M,y2))
# erreur de dimensions
y3 = np.array([1,1,1]).reshape(1,3)
print(M.dot(y3))
M1 = np.arange(4).reshape(2,2)
print(M1)
# matrice inverse
M1_inv = np.linalg.inv(M1)
print(M1_inv)
# valeurs et vecteurs propres
eig = np.linalg.eig(M1)
val = eig[0]
vec = eig[1]
print(val, '\n')
print(vec)
Pg. 12 CONDITIONS
CONDITIONS
Syntaxe
if ( condition 1 ) :
instructions ; …
elif ( condition ) :
instructions ; …
else :
instructions ; …
Example 1
x = 5
if ( x > 10 ) :
print ( 'x est supérieur à 10' )
elif ( x < 0 ) :
print ( 'x est négatif' )
else :
print ( 'x est compris entre 0 et 10' )
x est compris entre 0 et 10
Example 2
Si vous le souhaitez, vous pouvez mettre une instruction if sur une seule ligne.
y = 7
if y == 7 : print ( 'y vaut sept!' )
y vaut sept!
Pg. 13 CONDITIONS
Example 3
Les booléens en Python sont True et False.
if True :
print ( 'oui' )
if Faux :
print ( 'non' )
Oui
Vous pouvez également utiliser 0 et 1 au lieu True et False comme suit :
if 1 :
print ( 'oui' )
if 0 :
print ( 'non' )
Oui
Example 4
Ce code résoudre une équation de 2 ème degré : 𝑎𝑥 2 + 𝑏𝑥 + 𝑐 = 0
a = float(input()); b= float(input()); c= float(input())
if a == 0 :
print (‘x = ’, -c / b)
else:
delta = b ** 2 – 4 * a * c
if delta >=0:
x1 = (-b – delta ** 0.5) / (2 * a)
x2 = (-b + delta ** 0.5) / (2 * a )
print (‘X1 = ‘, x1); print(‘X2 = ‘, x2)
else:
x1 = -b / (2 * a); x2 = (-delta) ** 0.5 / (2 * a)
print (‘X1 = ’ + str(x1) + ‘+ i ‘ + str(x2))
print (‘X2 = ’ + str(x1) + ‘- i ‘ + str(x2))
Pg. 14 BOUCLES
BOUCLES
Syntaxe While
while ( condition ):
instructions ; …
Example
i = 10
while ( i < 13 ):
print ( i )
i += 1
10
11
12
Syntaxe For
for index in range :
instructions ; …
Example 1
x = [ 'pomme' , 'banane' , 'cerise' ]
for fruits in x :
print ( fruit )
pomme
banane
cerise
Example 2
for i in range ( 3 ):
print ( i )
0
1
2
Pg. 15 BOUCLES
Example 3
for a , b in [( 1 , 1 ),( 2 , 4 ),( 3 , 9 )] :
print ( a , ' au carré est égal à ' , b )
1 au carré est égal à 1
2 au carré est égal à 4
3 au carré est égal à 9
Example 4
𝑥2 𝑥4 𝑥𝑛
+ +... + 𝑠𝑖 𝑛 𝑒𝑠𝑡 𝑝𝑎𝑖𝑟
SPF = 2! 34! 𝑛!
𝑛
𝑥 𝑥
{𝑥 + 3! +... + 𝑛! 𝑠𝑖 𝑛 𝑒𝑠𝑡 𝑖𝑚𝑝𝑎𝑖𝑟
Pour calculer la somme SPF, voici le code :
n = input('Merci pour introduise n : ')
x = input('Merci pour introduise x : ')
F = 1
index = int(n) % 2
SFP = float(x) * index
P = float(x) ** index
for i in range(2 + index, int(n) + 1, 2):
F = F * i *(I - 1)
P = P * float(x) * float(x)
SPF = SPF + P/F
print(SPF)
Pg. 16 FONCTIONS
FONCTIONS
Syntaxe
def nom_de_la_fonction ( paramètres ):
instructions ; …
return ( résultat )
Example 1
def carre ( x ):
return ( x ** 2 )
print ( carre ( 4 ))
16
Example 2
Vous pouvez donner des valeurs de paramètres par défaut :
def prod ( x = 1 , y = 2 ):
return ( x * y )
print ( prod (), prod ( 2 ), prod ( 3 , 4 ))
2 4 12
Pg. 17 LIRE ET ECRIRE DANS DES FICHIERS
LIRE ET ECRIRE DANS DES FICHIERS
À cet égard, Python est assez similaire à C.
# créer des données à écrire dans le fichier
x = [ 1 , 2 , 3 , 4 , 5 ]
carres = [ i ** 2 for i in x ]
couleurs = [ 'rouge' , 'bleu' , 'jaune' , 'vert ' , 'rou
ge' ]
# convertir x et les carrés en chaînes
x = [ str ( i ) for i in x ]
squares = [ str ( i ) for i in carres ]
print ( x )
print ( squares )
['1', '2', '3', '4', '5']
['1', '4', '9', '16', '25']
# compresser les trois variables ensemble
mydata = list ( zip ( x , squares , couleurs ))
mydata
[('1', '1', 'red'),
('2', '4', 'blue'),
('3', '9', 'yellow'),
('4', '16', 'green'),
('5', '25', 'red')]
# ouvrir un fichier en écriture
f = open ( 'testfile.csv' , 'w' )
# écrivez une ligne à la fois à partir de mydata
# la boucle for extrait automatiquement un élément à la fo
is (dans ce cas, un tuple à la fois)
for ligne in mydata :
f.write(','.join(ligne) + '\n')
# ferme le fichier
f . close ()
Pg. 18 LIRE ET ECRIRE DANS DES FICHIERS
Maintenant, pour relire ces données :
# regardez les données brutes
# réfléchissez à la façon dont cela peut être analysé
f = open ( 'testfile.csv' , 'r' )
f . read ()
'1,1,rouge\n2,4,bleu\n3,9,jaune\n4,16,vert\n5,25,rouge\n'
# lire les données
f = open ( 'testfile.csv' , 'r' )
x2 , squares2 , colours2 = [], [], []
for ligne in f :
# remarque : strip() supprime le \n
tmp = line.strip().split(',')
x2.append(tmp[0])
squares2.append(tmp[1])
colours2.append(tmp[2])
print ( x2 )
print ( squares2 )
print ( colours2 )
['1', '2', '3', '4', '5']
['1', '4', '9', '16', '25']
['rouge', 'bleu', 'jaune', 'vert', 'rouge']
# convertir les chaînes numériques en entiers
x2 = [ int ( i ) for i in x2 ]
squares2 = [ int ( i ) for i in squares2 ]
print ( x2 )
print ( squares2 )
[1, 2, 3, 4, 5]
[1, 4, 9, 16, 25]
Pg. 19 LIRE ET ECRIRE DANS DES FICHIERS
Afficher / définir le répertoire de travail
# importer le package os. En savoir plus sur les packages
ci-dessous.
import os
# afficher le répertoire de travail
os.getcwd ()
'/ Users/H_Bel/Documents/Work/ITTalents/ENSSEA/python'
# change le répertoire de travail
os.chdir('/Users/H_Bel/Documents/Work/ITTalents/ENSSEA' )
os.getcwd ()
'/ Users/H_Bel/Documents/Work/ITTalents/ENSSEA'
Simulation et exportation d’une DataFrame
import pandas as pd
import random
id = range(1,101)
cav = [random.randint(6,11) for i in range(100)]
cap = [random.randint(7,15) for i in range(100)]
genre = ['Femme','Homme'] * 50
age = ['Adolescent','Adulte','Vieux'] * 33 + ['Adolescent'
]
data = [id,genre,age,cav,cap]
df2 = pd.DataFrame(data)
df1 = df2.T
df1.columns = ['ID', 'Genre', 'Age', 'Consom Avant', 'Cons
om Aprés']
df1.to_csv('BDD1.csv',index=False)
df1.to_excel('BDD1.xlsx',index=False)
df1.to_csv('BDD1.txt', sep='\t', index=False)
Pg. 20 LIRE ET ECRIRE DANS DES FICHIERS
df = pd.read_excel(‘BDD1.xlsx')
print(df.columns)
Pg. 21 INFORMATION DU FORMATEUR
INFORMATION DU FORMATEUR
Hicham BELDJILLALI
Maitre de Conférence
H_beldjilllali@hotmail.com