0% ont trouvé ce document utile (0 vote)
4 vues201 pages

Introduction à Python et ses caractéristiques

Le document présente Python comme un langage de programmation populaire, développé par Guido van Rossum, principalement utilisé dans la science des données et l'intelligence artificielle. Il explique les caractéristiques de Python, ainsi que les concepts de compilation et d'interprétation, en soulignant que Python est principalement interprété mais inclut une phase de compilation vers le bytecode. Le document mentionne également des bibliothèques et frameworks Python populaires, ainsi que des environnements de développement intégrés (IDE) pour faciliter le codage.

Transféré par

hassnaebenchikar
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues201 pages

Introduction à Python et ses caractéristiques

Le document présente Python comme un langage de programmation populaire, développé par Guido van Rossum, principalement utilisé dans la science des données et l'intelligence artificielle. Il explique les caractéristiques de Python, ainsi que les concepts de compilation et d'interprétation, en soulignant que Python est principalement interprété mais inclut une phase de compilation vers le bytecode. Le document mentionne également des bibliothèques et frameworks Python populaires, ainsi que des environnements de développement intégrés (IDE) pour faciliter le codage.

Transféré par

hassnaebenchikar
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Abdelmalek Essaâdi

Faculté des Sciences et Techniques d’Al-Hoceima

Département d’Informatique
Filière : IDDL– S5
Année universitaire : 2024- 2025

Python pour la science de données

Pr. Abderrahim zannou


[Link]@[Link]

Pr . A. Zannou 1 FST d’ Al-Hoceima


Introduction

 Un langage de programmation est un intermédiaire entre l’homme et la


machine.
 Python est un langage de programmation développé à partir de 1989 par
Guido van Rossum.
 Python est un langage orienté objet.
 À l’origine, il a été développé Python pour améliorer le langage de
programmation ABC
 Actuellement, Python est le langage de programmation le plus populaire et le
plus utilisé, notamment dans le domaine de science de données et
l’intelligence artificielle.
 Python est portable sur différents systèmes d'exploitation informatiques tels
que Windows, macOS, Linux et Unix.

2
Pr . A. Zannou FST d’ Al-Hoceima
les caractéristiques principales de Python

 Un langage interprété
 Un langage facile à utiliser
 Un langage à typage dynamique
 Un langage de haut niveau
 Un langage orienté objet

3
Pr . A. Zannou FST d’ Al-Hoceima
les caractéristiques principales de Python

 Langage de haut niveau : Le code est plus lisible et plus proche du langage

humain (ex. : Python, Java, C/C++).

 Langage de bas niveau : Le code est moins lisible et plus proche du langage

machine (ex. : langage assembleur, langage machine).

4
Pr . A. Zannou FST d’ Al-Hoceima
Compilation et Interprétation
 Compilation

 La compilation consiste à traduire l'intégralité du code source d'un programme en


code machine ou code binaire avant son exécution.
 Ce processus est réalisé par un programme appelé compilateur
 Une fois compilé, le programme peut être exécuté directement par le processeur
de l'ordinateur, sans avoir besoin du code source ou du compilateur.

5
Pr . A. Zannou FST d’ Al-Hoceima
Compilation et Interprétation
 Compilation

 Le code machine est l'ensemble d'instructions (souvent exprimées en hexadécimal)


exécutables directement par le processeur d'un ordinateur.
 Le code binaire est une représentation numérique des données ou des instructions
sous forme de bits (0 et 1). Tout code machine est traduit en binaire, car les
processeurs ne comprennent que des suites de bits.
 Pendant la compilation, le code source est transformé en code machine, qui est
ensuite exprimé sous forme de code binaire.
 Dans la pratique, après la compilation, le fichier exécutable contient en réalité le
code binaire (la représentation en 0 et 1 des instructions du code machine).

6
Pr . A. Zannou FST d’ Al-Hoceima
Compilation et Interprétation
 Compilation

Avantages de compilation:
 Les programmes compilés ont tendance à être plus rapides et plus efficaces, car tout
le travail de traduction est fait à l'avance.
 Le code compilé peut être distribué sous forme d'exécutable sans révéler le code
source.
Inconvénients de compilation
 Le processus de compilation peut être long, surtout pour de gros programmes.
 Chaque fois qu'un changement est apporté au code source, il faut recompiler
l'ensemble du programme pour exécuter les modifications.

7
Pr . A. Zannou FST d’ Al-Hoceima
Compilation et Interprétation
 Interprétation

 L'interprétation consiste à traduire et exécuter le code source ligne par ligne ou


instruction par instruction au moment de son exécution.
 Ce processus est réalisé par un programme appelé interpréteur.
 Contrairement à la compilation, il n'y a pas de phase de traduction complète en code
machine ; l'interpréteur lit le code source et exécute les instructions directement.

8
Pr . A. Zannou FST d’ Al-Hoceima
Compilation et Interprétation
 Interprétation

Avantages:
 Il est possible de tester et exécuter le code immédiatement, sans avoir besoin de
compiler l'ensemble du programme, ce qui est idéal pour le développement rapide et
le prototypage.
 Les erreurs dans le code sont généralement plus faciles à identifier, car elles sont
signalées dès leur apparition pendant l'exécution.
Inconvénients:
 L'exécution des programmes interprétés est généralement plus lente, car chaque
instruction doit être traduite en code machine en temps réel.
 Le code source doit être disponible pour être interprété, ce qui peut poser des
problèmes de sécurité ou de confidentialité.

9
Pr . A. Zannou FST d’ Al-Hoceima
Compilation et Interprétation
 Comparaison

Compilation :
• Convertit tout le code source en un exécutable complet avant l'exécution.
• L'exécution est ensuite rapide et indépendante du code source.
Interprétation :
Traduit et exécute le code source au fur et à mesure, ce qui permet une flexibilité accrue
mais une performance généralement plus lente
 Langages compilés : Python , PHP, JavaScript, Ruby
 Langages interprétés : C, C++
 Langages compilés et interprétés (hybrides) : Java, C#, Kotlin

10
Pr . A. Zannou FST d’ Al-Hoceima
Interprétation - Python

 Python est principalement un langage interprété, bien qu'il possède également des
aspects de compilation.
 Compilation vers le bytecode :
 Lors de l'exécution d'un script Python, le code source (.py) est d'abord compilé
en bytecode (un code intermédiaire), ce qui crée des fichiers .pyc.
 Cependant, cette compilation diffère de la compilation classique des langages
compilés comme C ou C++. En effet, elle est transparente pour l'utilisateur, et ce
bytecode est stocké pour être interprété ultérieurement.

11
Pr . A. Zannou FST d’ Al-Hoceima
Interprétation - Python

 Interprétation du bytecode :
 Le bytecode est ensuite interprété par la Python Virtual Machine (PVM). Cette
machine virtuelle exécute le code ligne par ligne, ce qui donne à Python ses
caractéristiques de langage interprété.
 C'est la raison pour laquelle Python est souvent considéré comme un langage
interprété : l'exécution du code est réalisée par l'interpréteur Python (le PVM),
ce qui permet de tester et d'exécuter le code rapidement sans une phase explicite
de compilation

12
Pr . A. Zannou FST d’ Al-Hoceima
Interprétation - Python

 Conclusion - Les deux aspects :


 Python possède une phase de compilation vers le bytecode, mais c'est une étape
cachée à l'utilisateur, et le code n'est pas directement compilé en langage
machine.
 Finalement, c'est l'interpréteur Python qui exécute le code, ce qui fait que
Python est principalement considéré comme un langage interprété

13
Pr . A. Zannou FST d’ Al-Hoceima
Compilation – C/C++

 Le code source écrit en C ou C++ (.c ou .cpp) est compilé par un compilateur (comme GCC ou
Clang). La compilation traduit le code source en code machine ou binaire qui est spécifique à
l'architecture de l'ordinateur cible.
 Une fois le code source compilé, le code machine généré peut être exécuté directement par le
processeur, ce qui conduit généralement à de meilleures performances.
 Il n’y a pas de conversion en bytecode intermédiaire ni d’étape d'interprétation lors de
l'exécution, ce qui distingue clairement ces langages des langages interprétés comme Python.
 C et C++ nécessitent une compilation explicite du code source avant l’exécution, ce qui les
classe clairement comme des langages compilés.
 L'étape de compilation est nécessaire pour traduire le code source en un format exécutable par
la machine, garantissant une exécution rapide et optimisée une fois la compilation terminée.

14
Pr . A. Zannou FST d’ Al-Hoceima
Compilation/interprété – JAVA

 Java est un langage à la fois compilé et interprété, car il combine des éléments des
deux approches.
 Compilation vers le bytecode :
 Le code source Java (.java) est compilé par le compilateur Java (javac) en
bytecode, qui est un code intermédiaire indépendant de la machine. Ce bytecode
est stocké dans des fichiers .class.
 Contrairement à C ou C++, cette compilation ne produit pas directement un
exécutable machine, mais une représentation portable du code qui peut être
exécutée sur n'importe quelle plateforme supportant une machine virtuelle Java
(JVM).

15
Pr . A. Zannou FST d’ Al-Hoceima
Compilation/interprété – JAVA

 Interprétation et exécution par la JVM


 Ce bytecode est ensuite interprété et exécuté par la Java Virtual Machine (JVM),
qui agit comme une couche d'abstraction entre le code et la machine hôte.
 La JVM lit le bytecode et le traduit en instructions machine spécifiques à
l'architecture de la machine sur laquelle Java est exécuté. Cela permet d'obtenir
une portabilité, car le même bytecode peut être exécuté sur différentes
plateformes sans modification.

16
Pr . A. Zannou FST d’ Al-Hoceima
Compilation/interprété – JAVA

 Optimisation par compilation juste-à-temps (JIT) :


 La JVM utilise également une technique appelée Just-In-Time (JIT)
compilation, qui consiste à compiler certaines parties du bytecode en code
machine natif lors de l'exécution pour optimiser les performances. Cette
approche hybride permet d'obtenir des performances plus proches de celles des
langages compilés purs comme C ou C++.

17
Pr . A. Zannou FST d’ Al-Hoceima
Compilation/interprété – JAVA

Langage hybride :
 Java est donc un langage compilé dans le sens où le code source est converti en
bytecode. Il est aussi interprété car ce bytecode est exécuté par la JVM de manière
interprétée ou compilée à la volée.
 L’architecture de Java le classe comme un langage hybride, combinant les avantages
de la portabilité d’un langage interprété et les performances optimisées d’un langage
compilé.

18
Pr . A. Zannou FST d’ Al-Hoceima
ByteCode

 Le bytecode est un code intermédiaire généré par certains langages de


programmation (comme Java ou Python) après la compilation du code source. Il n'est
pas directement exécutable par le processeur, mais plutôt par une machine virtuelle
(comme la JVM pour Java ou l'interpréteur Python).
 Exécution : Le bytecode nécessite une étape supplémentaire pour être exécuté, car il
doit d'abord être interprété ou compilé en code machine par la machine virtuelle.
Cela le rend indépendant de la plateforme, ce qui permet d'exécuter le même
bytecode sur différentes architectures matérielles, tant que la machine virtuelle est
disponible.

19
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèques Python (1)

 Une bibliothèque est une collection de codes fréquemment utilisés que les
développeurs peuvent inclure dans leurs programmes Python pour éviter
d'écrire du code à partir de zéro.
 Par défaut, Python est livré avec la bibliothèque standard, qui contient un
grand nombre de fonctions réutilisables.

20
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèques Python (2)

Les bibliothèques Python les plus populaires:


 NumPy : Une bibliothèque pour le calcul numérique qui prend en charge les tableaux
multidimensionnels (ou matrices) et fournit des fonctions mathématiques de haut
niveau pour les manipuler efficacement.
 Pandas : Utilisée pour la manipulation et l'analyse de données, Pandas offre des
structures de données flexibles comme les DataFrames, qui facilitent le nettoyage, la
transformation, et la visualisation des données.
 Matplotlib: Une bibliothèque de visualisation qui permet de créer des graphiques en
2D, tels que des diagrammes linéaires, des histogrammes, des courbes, et bien
d'autres, avec une grande flexibilité de personnalisation.
 Seaborn : Une bibliothèque basée sur Matplotlib qui permet de créer des
visualisations statistiques attractives et informatives. Elle simplifie la création de
graphiques complexes comme les heatmaps, les visualisations de régressions, et les
graphiques de distribution.
21
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèques Python (3)

 Scikit-learn :Une bibliothèque pour l'apprentissage automatique ( Machine


learning), offrant des outils simples et efficaces pour l'analyse prédictive, y
compris des algorithmes de classification, régression, et clustering.
 TensorFlow :Développée par Google, TensorFlow est une bibliothèque pour le
calcul numérique à grande échelle, utilisée principalement pour la création de
modèles d'apprentissage profond (deep learning).
 Keras : Une interface de haut niveau pour construire et entraîner des modèles
d'apprentissage profond, Keras est simple à utiliser et peut fonctionner avec
TensorFlow en arrière-plan.
 PyTorch : Développée par Facebook, PyTorch est une bibliothèque pour le deep
learning qui est appréciée pour sa flexibilité et son approche plus "pythonique"
que TensorFlow.

22
Pr . A. Zannou FST d’ Al-Hoceima
Framework Python Web (1)

Les framework Python Web


 Streamlit : Un framework Python open-source qui simplifie la création
d'applications web interactives pour la visualisation de données et le
prototypage rapide. Elle permet aux développeurs de transformer leurs scripts
Python en applications web conviviales en quelques lignes de code. Streamlit
est particulièrement populaire pour les projets de data science et
d'apprentissage automatique, car il permet de partager des résultats et des
modèles de manière interactive et visuelle.

23
Pr . A. Zannou FST d’ Al-Hoceima
Framework Python Web (2)

 Flask : Un micro-framework web léger, Flask est utilisé pour créer des
applications web en Python. Il est simple à utiliser et flexible, parfait pour des
projets de taille moyenne.
 Django : Un framework web de haut niveau qui encourage un
développement rapide et propre, Django permet de créer des applications web
robustes et sécurisées avec moins de code.

24
Pr . A. Zannou FST d’ Al-Hoceima
Les IDE Python

 Les IDE (plateformes de développement intégrées) Python sont des


plateformes dédiées au codage, à la compilation, à l'exécution, au test et au
débogage du code Python. On dit que les IDE Python comprennent le code
mieux que n'importe quel éditeur de texte.

25
Pr . A. Zannou FST d’ Al-Hoceima
Les IDE Python - 1 -

Voici la liste des IDE Python :

 PyCharm

 IDLE

 Visual Studio Code

26
Pr . A. Zannou FST d’ Al-Hoceima
Les IDE Python - 2 -

 Atom

 Sublime Text

 Spyder

 Jupyter

27
Pr . A. Zannou FST d’ Al-Hoceima
Conventions générales du langage

 Les fichiers de code en python sont nommés nom_de_fichier.py


 Les instructions sont séparées par un retour à la ligne (une instruction par
ligne)
 Les lignes qui débutent par # sont ignorées par le langage (lignes de
commentaires)

28
Pr . A. Zannou FST d’ Al-Hoceima
Variables et Types de Données en Python
 Variables

 Une variable est un conteneur qui stocke une valeur. nous pouvons penser à
une variable comme une étiquette attachée à une valeur.

nom_de_variable = valeur

 Affectation multiple

a, b, c = 2, 4.3, "ahmed"

 a est assigné à la valeur 2 (un entier).


 b est assigné à la valeur 4.3 (un nombre à virgule flottante).
 c est assigné à la chaîne de caractères "ahmed".

29
Pr . A. Zannou FST d’ Al-Hoceima
Variables et Types de Données en Python
 Types de Données

 Python dispose de plusieurs types de données de base :


o Entiers (int) : Nombres entiers.
o Nombres à virgule flottante (float) : Nombres décimaux.
o Chaînes de caractères (str) : Texte.
o Booléens (bool) : Vrai ou faux (True ou False).

30
Pr . A. Zannou FST d’ Al-Hoceima
Variables et Types de Données en Python
 Conversion de Types (Casting)

 On peut convertir une variable d'un type à un autre en utilisant des fonctions de
conversion.

Convertir un entier en chaîne de caractères :


age = 25
age_str = str(age) # Convertit l'entier 25 en chaîne "25"
Convertir une chaîne en entier :
prix = "100"
prix_int = int(prix) # Convertit la chaîne "100" en entier 100
Convertir un nombre décimal en entier :
note = 95.75
note_int = int(note) # Convertit 95.75 en 95

31
Pr . A. Zannou FST d’ Al-Hoceima
Affichage de données

 Pour afficher la valeur d’une variable a, on écrit :


print(a)
 Pour afficher plusieurs valeurs, on les sépare par une virgule :
print(a,b,c,....)
 On peut retour à la ligne en utilisant \n

print("Première ligne\nDeuxième ligne")

32
Pr . A. Zannou FST d’ Al-Hoceima
Variables et Types de Données en Python
 Déterminer le Type d'une Variable

print(type(age)) # Affichera : <class 'int'>


print(type(poids)) # Affichera : <class 'float'>
print(type(message)) # Affichera : <class 'str'>
print(type(est_adulte)) # Affichera : <class 'bool'>

33
Pr . A. Zannou FST d’ Al-Hoceima
Variables et Types de Données en Python
 Déterminer le Type d'une Variable

34
Pr . A. Zannou FST d’ Al-Hoceima
lire des données

 La fonction input() en Python permet de lire des données saisies par


l'utilisateur via la console.
 Elle renvoie toujours une chaîne de caractères.
 Si l'entrée attendue est un nombre, il faut la convertir (par exemple avec int()
ou float()).

Syntaxe :
variable = input(prompt)

prompt : C'est une chaîne de caractères (facultative) qui s'affiche à l'utilisateur


pour lui indiquer ce qu'il doit entrer.

Retour : La fonction renvoie une chaîne de caractères contenant l'entrée de


l'utilisateur.

35
Pr . A. Zannou FST d’ Al-Hoceima
lire des données

Exemple :
nom = input("Entrez votre nom : ")
print("Bonjour, " + nom + " !")

• Comme input() renvoie toujours une chaîne de caractères, si vous attendez un


nombre, il est important de convertir cette entrée en un type numérique (comme
int ou float).

Exemple :
age = int(input("Entrez votre âge : "))
print("Vous avez", age, "ans.")

Attention* : bool( input("..")) ne fonctionne pas

36
Pr . A. Zannou FST d’ Al-Hoceima
L’affectation des variables

 On affecte une valeur à une variable avec le signe =


 Exemples :
prenom = "mohamed" (la variable prenom est de type str)
n=3 (la variable n est de type int)
tva = 0.2 (la variable tva est de type float)
i = i + 1 (le type de la variable i dépend de son utilisation ( int ou float) avant
cette ligne)

37
Pr . A. Zannou FST d’ Al-Hoceima
Les opérateurs et expressions

 Opérateurs arithmétiques:
+-*/
 Opérateurs de comparaison :
<
<=
==
!=
>=
>
 Connecteurs logiques :
and
or
not(valeur)
true
false

38
Pr . A. Zannou FST d’ Al-Hoceima
Les opérateurs et expressions

# Variables de base
a = 10
b = 20
c = 15
d=5
# Expressions algébriques usuelles
addition = a + b # a + b = 10 + 20 = 30
soustraction = b - c # b - c = 20 - 15 = 5
multiplication = c * d # c * d = 15 * 5 = 75
division = b / d # b / d = 20 / 5 = 4.0

39
Pr . A. Zannou FST d’ Al-Hoceima
Les opérateurs et expressions

a=10
b=20
# Opérateurs de comparaison
inferieur = a < b # 10 < 20, donc True
inferieur_ou_egal = a <= 10 # 10 <= 10, donc True
egalite = a == b # 10 == 20, donc False
different = a != c # 10 != 15, donc True
superieur_ou_egal = b >= c # 20 >= 15, donc True
superieur = c > d # 15 > 5, donc True
# Connecteurs logiques
et_condition = (a < b) and (c > d) # True et True, donc True
ou_condition = (a > b) or (c > d) # False ou True, donc True
non_condition = not(a == b) # Non False, donc True
40
Pr . A. Zannou FST d’ Al-Hoceima
Structures de Contrôle
 Définition

 Les structures de contrôle permettent de diriger le flux d'exécution d'un programme


en fonction de certaines conditions ou répétitions.
 Elles sont essentielles pour créer des programmes dynamiques et interactifs.

41
Pr . A. Zannou FST d’ Al-Hoceima
Structures de Contrôle
 Instructions Conditionnelles

 Les instructions conditionnelles permettent d'exécuter du code uniquement si une


certaine condition est vraie.

Syntaxe :
if condition:
# Code à exécuter si la condition est vraie
elif autre_condition:
# Code à exécuter si la première condition est fausse et que cette condition est vraie
else:
# Code à exécuter si aucune des conditions précédentes n'est vraie

42
Pr . A. Zannou FST d’ Al-Hoceima
Structures de Contrôle
 Instructions Conditionnelles

Exemple :
age = 20
if age >= 18: #aussi if ( age >= 18):
print("Vous êtes majeur.")
elif age == 17:
print("Vous êtes presque majeur.")
else:
print("Vous êtes mineur.")

43
Pr . A. Zannou FST d’ Al-Hoceima
Structures de Contrôle
 Boucles

 Les boucles permettent de répéter une série d'instructions tant qu'une condition est
remplie ou pour un certain nombre de fois.
A. Boucle for
La boucle for est utilisée pour itérer sur une séquence (comme une liste, un tuple, ou
une chaîne de caractères).

Syntaxe :
for variable in sequence:
# Code à exécuter pour chaque élément de la séquence

Exemple: 0
for nombre in range(3): 1
2
print(nombre)

44
Pr . A. Zannou FST d’ Al-Hoceima
Structures de Contrôle
 Boucles

B. Boucle while
La boucle while continue de s'exécuter tant qu'une condition est vraie.

Syntaxe :
while condition:
# Code à exécuter tant que la condition est vraie

Exemple: 5
4
compteur = 5 3
while compteur > 0: 2
1
print(compteur)
compteur -= 1

45
Pr . A. Zannou FST d’ Al-Hoceima
Structures de Contrôle
 Break et continue

 break : Interrompt la boucle complètement.


 continue : Passe immédiatement à l'itération suivante de la boucle.

Exemple:
for nombre in range(10):
if nombre == 5:
break
print(nombre)

0
1
2
3
4

46
Pr . A. Zannou FST d’ Al-Hoceima
Structures de Contrôle
 Break et continue

Exemple:
for nombre in range(5):
if nombre == 2:
continue
print(nombre)

0
1
3
4

47
Pr . A. Zannou FST d’ Al-Hoceima
Structures de Contrôle
 Boucles

En Python, il n'existe pas de boucle do while comme dans certains autres langages de

programmation (par exemple, C ou Java).

Toutefois, on peut simuler une boucle do while en utilisant une boucle while avec

une condition qui est initialement toujours vraie et une vérification de la condition à

la fin de la boucle.

48
Pr . A. Zannou FST d’ Al-Hoceima
Structures de Contrôle
 Boucles

Exemple :
while True:
note = float(input("Entrez une note entre 0 et 20 : "))

# Condition de sortie (ce qui serait la condition du while)


if 0 <= note <= 20: #équivalent à note >= 0 and note <= 20
break # Si la condition est satisfaite, on sort de la boucle
print("La note doit être comprise entre 0 et 20. Veuillez réessayer.")

49
Pr . A. Zannou FST d’ Al-Hoceima
Structures de Contrôle
 Combinaison de conditions

On peut combiner plusieurs conditions en utilisant les opérateurs logiques and, or, et not.

Exemple:
age = 20
nationalite = "Marocaine"
if age >= 18 and nationalite == " Marocaine":
print("Vous pouvez voter en Maroc.")

50
Pr . A. Zannou FST d’ Al-Hoceima
Fonctions
 Définition

 Les fonctions sont des blocs de code réutilisables qui effectuent une tâche
spécifique.
 Elles permettent de structurer votre code de manière plus modulaire et de réduire
les répétitions.
 Pour définir une fonction en Python, nous utilisons le mot-clé def suivi du nom de
la fonction et de parenthèses. Si la fonction prend des arguments (ou paramètres),
nous les placez entre les parenthèses

Syntaxe:
def nom_de_la_fonction(parametre1, parametre2):
# Bloc de code de la fonction
return valeur_a_renvoyer

51
Pr . A. Zannou FST d’ Al-Hoceima
Fonctions
 Exemple

Exemple:
def saluer(nom):
message = "Bonjour, " + nom + "!"
return message
message = saluer("Alice")
print(message)

Bonjour, Alice!

52
Pr . A. Zannou FST d’ Al-Hoceima
Fonctions
 Valeurs par défaut

Fonctions avec valeurs par défaut


Nous pouvons spécifier des valeurs par défaut pour les paramètres, ce qui permet d'appeler
la fonction sans passer tous les arguments.

Syntaxe:
def nom_de_la_fonction(parametre1=valeur_defaut):
# Bloc de code de la fonction

53
Pr . A. Zannou FST d’ Al-Hoceima
Fonctions
 Valeurs par défaut

Exemple:
def saluer(nom="Invité"):
message = "Bonjour, " + nom + "!"
return message
message = saluer()
print(message)

Bonjour, Invité!

def saluer(a, nom="Invité"): Valide

def saluer(nom="Invité", a): Erreur

54
Pr . A. Zannou FST d’ Al-Hoceima
Fonctions
 Fonctions lambda

 Les fonctions lambda sont des fonctions anonymes, c'est-à-dire des fonctions sans nom,
qui sont souvent utilisées pour des opérations simples.

Syntaxe:
lambda parametres: expression

Exemple 1:
addition = lambda x, y: x + y
print(addition(3, 4))

Explication : lambda x, y: x + y est une fonction lambda qui prend deux arguments et
renvoie leur somme. Elle est utilisée pour une tâche simple en une seule ligne.

55
Pr . A. Zannou FST d’ Al-Hoceima
Fonctions
 Fonctions lambda

Exemple 2:
# Fonction lambda pour élever un nombre à la puissance donnée
puissance = lambda x, y: x ** y
# Utilisation
resultat = puissance(3, 3)
print(resultat) # Résultat attendu : 27

56
Pr . A. Zannou FST d’ Al-Hoceima
Fonctions
 Fonctions lambda

Exemple 3:
# Fonction lambda qui retourne la chaîne de caractères
salutation = lambda s: "Bonjour " + s
# Utilisation
resultat = salutation("Ahmed")
# Affichage du résultat
print(resultat) # Résultat attendu : 'Bonjour Ahmed'

57
Pr . A. Zannou FST d’ Al-Hoceima
Fonctions
 Fonctions lambda

Exemple 4:
# Fonction lambda qui retourne un message
salutation = lambda: "Bonjour Ahmed"
# Utilisation
resultat = salutation()
print(resultat) # Résultat attendu : 'Bonjour Ahmed'

58
Pr . A. Zannou FST d’ Al-Hoceima
Fonctions
 Portée des variables

Les variables définies à l'intérieur d'une fonction sont locales à cette fonction et ne sont pas
accessibles en dehors

Exemple:
def ma_fonction():
x = 10 # x est une variable locale
print(x)
ma_fonction()
print(x) # Provoquera une erreur car x n'est pas accessible en dehors de la fonction

59
Pr . A. Zannou FST d’ Al-Hoceima
Fonctions
 Fonctions récursives

Une fonction est récursive si elle s'appelle elle-même.

Exemple:
def factorielle(n):
if n == 1:
120
return 1
else:
return n * factorielle(n-1)
print(factorielle(5))

Explication : La fonction factorielle calcule la factorielle d'un nombre en multipliant ce


nombre par la factorielle du nombre précédent, jusqu'à atteindre 1.

60
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Introduction

Les listes et les tuples sont des types de données qui permettent de stocker plusieurs
éléments dans une seule variable. Bien qu'ils soient similaires, il existe des
différences clés entre eux.

61
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes

Les listes ( sont différentes aux tableaux) sont des collections ordonnées et
modifiables d'éléments et peuvent être de différents éléments. Elles sont définies par
des crochets []

Syntaxe:
ma_liste = [élément1, élément2, élément3]

fruits = ["pomme", "banane", 1]

Accès aux éléments : On peut accéder à un élément d'une liste en utilisant son
index (la position de l'élément dans la liste, en commençant par 0).

Exemple:
print(fruits[0]) # Affiche: pomme
fruits[1] = "orange"
print(fruits) # Affiche: ["pomme", "orange", 1]
62
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes - append

Les listes sont modifiables, ce qui signifie que nous pouvons ajouter, supprimer et
modifier des éléments après leur création.

Ajouter des éléments : Utilisons append() pour ajouter un élément à la fin de la liste.

Exemple:
[Link]("mangue")
print(fruits) # Affiche ["pomme", "orange", 1 , "mangue"]

63
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes - index

Pour obtenir l'index d'un élément dans une liste, nous pouvons utiliser la méthode
index(). Cette méthode retourne l'index de la première occurrence de l'élément spécifié
dans la liste.

Exemple 1:
fruits = ["pomme", "banane", "kiwi", "banane"]
# Trouver l'index de "kiwi"
index_kiwi = [Link]("kiwi")
print("L'index de 'kiwi' est :", index_kiwi)
# Trouver l'index de "banane"
index_banane = [Link]("banane")
print("L'index de la première 'banane' est :", index_banane)

L'index de 'kiwi' est : 2


L'index de la première 'banane' est : 1
64
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes - index

Remarques :
 Si l'élément est présent plusieurs fois dans la liste, index() ne renvoie que l'index de la
première occurrence. Si l'élément n'existe pas dans la liste, une ValueError est levée.
 Pour éviter cela, nous pouvons vérifier au préalable si l'élément est présent dans la liste
à l'aide de in.

Exemple 1:
fruits = ["pomme", "banane", "kiwi"]
# Vérifier si "orange" est dans la liste avant de trouver son index
if "orange" in fruits:
index_orange = [Link]("orange")
print("L'index de 'orange' est :", index_orange)
else: 'orange' n'est pas dans la liste.
print("'orange' n'est pas dans la liste.")
65
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – suppression des éléments - remove

remove() :
Objectif : Supprime la première occurrence d'un élément spécifique dans
une liste en se basant sur sa valeur.
Paramètre : L'élément à supprimer (la valeur).
Utilisation : Ne fonctionne que si l'élément existe dans la liste, sinon il
lève une ValueError.
Retour : Ne retourne rien. Il modifie la liste en place

Exemple:
fruits = ["pomme", "banane", "kiwi"]
[Link]("banane")
print(fruits) # Résultat : ['pomme', 'kiwi']

66
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – suppression des éléments - pop

pop() :
Objectif : Supprime et renvoie l'élément à un index spécifique.
Paramètre : L'index de l'élément à supprimer (si aucun index n'est donné,
il supprime et renvoie le dernier élément).
Utilisation : Si l'index fourni est hors de portée (out of range), il lève une
IndexError.
Retour : Renvoie l'élément supprimé.

Exemple 1:
fruits = ["pomme", "banane", "kiwi"]
element = [Link](1) # Supprime "banane" et le renvoie
print(fruits) # Résultat : ['pomme', 'kiwi']
print(element) # Résultat : 'banane'

67
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – suppression des éléments - pop

Exemple 2:
fruits = ["pomme", "banane", "kiwi"]
[Link](1) # Supprime "banane"
print(fruits) # Résultat : ['pomme', 'kiwi']

68
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – suppression des éléments - del

del() :
Objectif : Supprime des éléments ou des tranches d'éléments en se basant
sur leur index. Peut aussi supprimer des variables.
Paramètre : Un index ou une tranche d'index (ex: del liste[1:3]).
Utilisation : Peut également être utilisé pour supprimer entièrement une
variable.
Retour : Ne retourne rien. Il modifie la liste en place.

Exemple 1: (suppression d'un élément par index)


fruits = ["pomme", "banane", "kiwi"]
del fruits[1] # Supprime "banane"
print(fruits) # Résultat : ['pomme', 'kiwi']

69
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – suppression des éléments - del

Exemple 2: (suppression d'une tranche)


fruits = ["pomme", "banane", "kiwi", "orange"]
del fruits[1:3] # Supprime "banane" et "kiwi"
print(fruits) # Résultat : ['pomme', 'orange']

70
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes - Longueur

Longueur d'une liste : Utilisons len() pour obtenir le nombre d'éléments dans une liste.

Exemple 1:
print(len(fruits)) # Affiche 2

1 mangue
71
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes - Parcourir

Il existe plusieurs façons de parcourir une liste en Python. Voici les méthodes les plus courantes

1. Boucle for classique : Nous pouvons parcourir une liste élément par élément en utilisant une

boucle for.

Exemple 1:
fruits = ["pomme", 4, "banane", "kiwi"]
for fruit in fruits:
print(fruit)

Pomme
4
banane
kiwi

72
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes - Parcourir

2. Boucle for avec index (en utilisant range() et len()) :


Si nous avez besoin de l'index des éléments pendant que nous les parcourez, nous
pouvons utiliser range() avec len() pour parcourir la liste par index.

Exemple 2:
fruits = ["pomme", 4, "banane", "kiwi"]
for i in range(len(fruits)):
print(f"Index {i}: {fruits[i]}")

Index 0: pomme
Index 1: 4
Index 2: banane
Index 3: kiwi

73
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes - Parcourir

3. Boucle for avec enumerate() :

enumerate() est une méthode pratique qui permet de parcourir une liste tout en obtenant à la fois

l'élément et son index.

Exemple 3:
fruits = ["pomme", 4, "banane", "kiwi"]
for index, fruit in enumerate(fruits):
print(f"Index {index}: {fruit}")

Index 0: pomme
Index 1: 4
Index 2: banane
Index 3: kiwi

74
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – Listes imbriquées

Les listes peuvent contenir d'autres listes, ce qui permet de créer des structures
de données complexes.

Exemple:
liste_imbriquee = [["pomme", "banane"], ["carotte", "brocoli"]]
print(liste_imbriquee[0]) # Affiche: ["pomme", "banane"]
print(liste_imbriquee[1][1]) # Affiche: brocoli

75
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – Autres opérations sur les listes

 sum() : Numériques uniquement.

 Moyenne (sum(liste) / len(liste)) : Numériques uniquement.

 sort() , sorted() : Tout type comparable (même type dans la liste).

 max() , min() : Tout type comparable (même type dans la liste).

 count() : Tout type.

 append() , extend() : Tout type.

 insert() : Tout type.

 reverse() , [::-1] : Tout type.

Si les éléments sont des chaînes de caractères alors traités par ordre alphabétique

76
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – Autres opérations sur les listes

Exemple 3 (1):
# Créer une liste initiale
nombres = [4, 2, 9, 1, 5, 6, 2]
# 1. Calculer la somme des éléments
somme = sum(nombres)
print("Somme des éléments :", somme) # Somme des éléments : 29
# 2. Calculer la moyenne
moyenne = somme / len(nombres)
print("Moyenne des éléments :", moyenne) #Moyenne des éléments : 4.142857142857143
# 3. Trier la liste avec sort() (en place)
[Link]()
print("Liste triée (sort) :", nombres) # Liste triée (sort) : [1, 2, 2, 4, 5, 6, 9]

77
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – Autres opérations sur les listes

Exemple 3 (2) :
# 4. Trier la liste avec sorted() (sans modifier la liste originale)
nombres_non_triee = [4, 2, 9, 1, 5, 6, 2]
nombres_triee = sorted(nombres_non_triee)
print("Liste triée avec sorted() :", nombres_triee) #Liste triée avec sorted() : [1, 2, 2, 4, 5, 6, 9]
# 5. Trouver le maximum et le minimum
maximum = max(nombres)
minimum = min(nombres)
print("Maximum :", maximum) #Maximum : 9
print("Minimum :", minimum) #Minimum : 1
# 6. Compter les occurrences d'un élément (exemple : nombre 2)
compte_de_2 = [Link](2)
print("Nombre d'occurrences de 2 :", compte_de_2) #Nombre d'occurrences de 2 : 2

78
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – Autres opérations sur les listes

Exemple 3 (3):
# 7. Ajouter un élément à la liste avec append()
[Link](7)
print("Liste après append (ajout de 7) :", nombres) #Liste après append (ajout de 7) : [1, 2, 2, 4, 5, 6, 9, 7]
# 8. Ajouter plusieurs éléments à la liste avec extend()
[Link]([8, 10])
print("Liste après extend (ajout de 8 et 10) :", nombres) # Liste après extend (ajout de 8 et 10) : [1, 2, 2, 4, 5, 6, 9, 7, 8, 10]

79
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – Autres opérations sur les listes

Exemple 3 (4) :
# 9. Insérer un élément à une position spécifique avec insert()
[Link](2, 3) # Insère le nombre 3 à l'index 2
Liste après insert (insertion de 3 à l'index 2) : [1, 2, 3, 2, 4, 5, 6, 9, 7, 8, 10]
print("Liste après insert (insertion de 3 à l'index 2) :", nombres)
# 10. Inverser la liste avec reverse()
[Link]()
print("Liste inversée (reverse) :", nombres) Liste inversée (reverse) : [10, 8, 7, 9, 6, 5, 4, 2, 3, 2, 1]

80
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – Autres opérations sur les listes

# 11. Inverser la liste avec [::-1] Nouvelle liste inversée avec [::-1] : [1, 2, 3, 2, 4, 5, 6, 9, 7, 8, 10]
nombres_inversee = nombres[::-1]
print("Nouvelle liste inversée avec [::-1] :", nombres_inversee)

L'instruction nombres_inversee = nombres[::-1] en Python est utilisée pour inverser


une liste.
 [::-1] : C'est un slicing (découpage) avec trois parties [start:stop:step] :
 start : L'index de départ (si omis, il commence au début de la liste).
 stop : L'index de fin (si omis, il continue jusqu'à la fin de la liste).
 step : Le pas entre les éléments. Ici, -1 signifie que la liste est parcourue à
l'envers, donc on récupère tous les éléments dans l'ordre inverse.

81
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – Autres opérations sur les listes

Exemple 1:
nombres_non_triee = [4, 2, 9, 1, 5, 6, 2]
nombres_inversee = nombres_non_triee[1:4:1]
print("Nouvelle liste inversée :", nombres_inversee)
Nouvelle liste inversée : [2, 9, 1]

Exemple 2:
nombres_non_triee = [4, 2, 9, 1, 5, 6, 2]
nombres_inversee = nombres_non_triee[4:1:-1]
print("Nouvelle liste inversée :", nombres_inversee)

Nouvelle liste inversée : [5, 1, 9]

82
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Listes – Autres opérations sur les listes

Déballage : On peut affecter les éléments d’une liste à des variables individuelles.

Exemple:
couleurs =["rouge", "vert", "bleu"]
r, v, b = couleurs
print(r) # Affiche: rouge

Suppression la liste entière:

Exemple:
couleurs =["rouge", "vert", "bleu"]
del couleurs
print(couleurs) NameError: name 'couleurs' is not defined
83
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Tuples

Les tuples sont similaires aux listes, mais ils sont immuables, ce qui signifie qu'une fois
créés, leurs éléments ne peuvent pas être modifiés. Les tuples sont définis par des
parenthèses ().

Syntaxe:
mon_tuple = (élément1, élément2, élément3)

Exemple:
couleurs = ("rouge", 2 , "bleu")

Accès aux éléments : Comme pour les listes, on peut accéder aux éléments d'un
tuple en utilisant leur index.

Exemple:
print(couleurs[1]) # Affiche: 2
84
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Tuples

Immuabilité : Contrairement aux listes, les tuples ne peuvent pas être modifiés après
leur création.

Exemple:
# couleurs[1] = "jaune" # Provoquera une erreur car les tuples sont immuables

85
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Tuples - Opérations

Bien que les tuples soient immuables, on peut effectuer certaines opérations :

Concaténation : Nous pouvons concaténer deux tuples pour en former un


nouveau

Exemple:
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
tuple3 = tuple1 + tuple2
print(tuple3) # Affiche: (1, 2, 3, 4, 5, 6)

Longueur d'un tuple : Utilisons len() pour obtenir le nombre d'éléments dans un tuple.

Exemple:
print(len(couleurs)) # Affiche 3

86
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Tuples - Opérations

Déballage : On peut affecter les éléments d'un tuple à des variables individuelles.

Exemple:
couleurs =("rouge", "vert", "bleu")
r, v, b = couleurs
print(r) # Affiche: rouge

87
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Tuples - Opérations

Voici une liste des opérations possibles avec des tuples :


 count() : Tout type.
 index() : Tout type.
 sum() : Éléments numériques uniquement.
 max() : Tout type comparable.
 min() : Tout type comparable.
 sorted() : Retourne une liste triée (pas un tuple), fonctionne avec tout
type comparable.
 len() : Tout type.
 Slicing (ex. : tuple[start:end]) : Tout type
 del : supprimer tuple entier et pas un élément du tuple

88
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Tuples - Opérations

Exemple:
t = ('bonjour', 'tout', 'le', 'monde')
result = max(t)
print(result) # Retourne 'tout' (car 't' est la dernière lettre dans l'ordre alphabétique)

89
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Tuples - Opérations

Voici une liste des opérations que l'on ne peut pas faire avec des tuples en raison de leur
nature immutable :
 append()
 extend()
 insert()
 remove()
 pop()
 sort()
 reverse()
 Modification directe des éléments (ex. : tuple[index] = new_value)
 Supprimer un élément (aucune méthode pour retirer un élément)

90
Pr . A. Zannou FST d’ Al-Hoceima
Listes et Tuples
 Comparison

Caractéristique Listes Tuples


Immuables (ne peuvent pas
Modifiables (éléments ajoutés,
Mutabilité être modifiés après
supprimés, modifiés)
création)
Définis par des parenthèses
Définition Définies par des crochets []
()
Légèrement plus lentes à cause de
Performances Plus rapides car immuables
leur mutabilité
Utilisés pour des
Utilisées lorsque les données doivent
Cas d'utilisation collections constantes de
changer
données

Ces concepts nous permettent de manipuler des collections de données efficacement


en Python. Les listes sont idéales pour les collections de données qui doivent être
modifiées, tandis que les tuples sont utiles pour des ensembles de données constants.

91
Pr . A. Zannou FST d’ Al-Hoceima
Dictionnaires et Ensembles
 Introduction

 Les dictionnaires et les ensembles sont des structures de données puissantes en


Python, utilisées pour stocker des collections de données.
 Ils offrent des méthodes uniques pour l'organisation et la manipulation des données.

92
Pr . A. Zannou FST d’ Al-Hoceima
Dictionnaires et Ensembles
 Dictionnaires

Les dictionnaires sont des collections de paires clé-valeur. Chaque clé est unique, et elle
est associée à une valeur.
Syntaxe:
mon_dictionnaire = {
"clé1": valeur1,
"clé2": valeur2,
"clé3": valeur3
}

Exemple *:
etudiant = {
"nom": "Alice",
"age": 25,
"note": 90} # ou etudiant = { "nom": "Alice", "age": 25, "note": 90}

93
Pr . A. Zannou FST d’ Al-Hoceima
Dictionnaires et Ensembles
 Dictionnaires

Accès aux valeurs : On peut accéder à la valeur associée à une clé en utilisant la clé
entre crochets.

Exemple*:
print(etudiant["nom"]) # Affiche: Alice

Ajout et modification d'éléments :

Exemple *:
etudiant["age"] = 26 # Modifie l'âge
etudiant["cours"] = "Mathématiques" # Ajoute un nouvel élément
print(etudiant)

{'nom': 'Alice', 'age': 26, 'note': 90, 'cours': 'Mathématiques'}

94
Pr . A. Zannou FST d’ Al-Hoceima
Dictionnaires et Ensembles
 Dictionnaires - Opérations

Les dictionnaires offrent plusieurs méthodes utiles pour manipuler les paires clé-valeur.

Supprimer un élément : Utilisons del/pop pour supprimer une clé (et sa valeur
associée) du dictionnaire.

Exemple:
del etudiant["note"]
print(etudiant) # Affiche {'nom': 'Alice', 'age': 26, 'cours': 'Mathématiques'}

Obtenir toutes les clés : Utilisons keys() pour obtenir une liste de toutes les clés.

Exemple:
print([Link]()) # Affiche dict_keys(['nom', 'age', 'cours'])

95
Pr . A. Zannou FST d’ Al-Hoceima
Dictionnaires et Ensembles
 Dictionnaires - Opérations

Obtenir toutes les valeurs : Utilisons values() pour obtenir une liste de toutes les valeurs.

Exemple:
print([Link]()) # Affiche dict_values(['Alice', 26, 'Mathématiques'])

Parcourir un dictionnaire : Utilisons une boucle for pour parcourir les paires clé-valeur.

Exemple:
p est le clé
for p, q in [Link](): q est la valuer
print(p, ":", q)

nom : Alice
age : 26
cours : Mathématiques

96
Pr . A. Zannou FST d’ Al-Hoceima
Dictionnaires et Ensembles
 Dictionnaire : Opérations possibles et Opérations non possibles

Dictionnaire*
Opérations possibles :
 sum() (sur les clés ou les valeurs si elles sont numériques)
 max() (sur les clés ou les valeurs si elles sont comparables)
 min() (sur les clés ou les valeurs si elles sont comparables)
 sorted() (retourne une liste triée des clés ou des valeurs)
 len() (retourne le nombre de paires clé-valeur)
 Accès direct aux éléments (par clé, ex. : d['clé'])
 pop() (retire et retourne un élément par clé)
 Modification directe des éléments (par clé)
 Supprimer un élément (avec del ou pop())
Opérations non possibles :
 count()
 index()
 Slicing (ex. : dictionnaire[start:end])
 append()
 extend()
 insert()
 remove()
 sort()
 reverse()

97
Pr . A. Zannou FST d’ Al-Hoceima
Dictionnaires et Ensembles
 Ensembles

Les ensembles sont des collections d'éléments uniques. Les ensembles ne permettent
pas de valeurs dupliquées.

Syntaxe:
mon_ensemble = {élément1, élément2, élément3}

Exemple:
fruits = {"pomme", "banane", 8}

Ajout d'éléments : Utilisons add() pour ajouter un élément à un ensemble.


Exemple *:
[Link]("orange")
print(fruits) # Affiche {'pomme', 'banane’, 8, 'orange'}

Suppression d'éléments : Utilisons remove() pour supprimer un élément spécifique.


Exemple:
[Link]("banane")
print(fruits) # Affiche {'pomme’, 8, 'orange'}
98
Pr . A. Zannou FST d’ Al-Hoceima
Dictionnaires et Ensembles
 Ensembles - Opérations

Les ensembles permettent d'effectuer des opérations mathématiques comme l'union,


l'intersection et la différence.
Union : Combine tous les éléments de deux ensembles (sans doublons).

Exemple:
ensemble_a = {"pomme", "banane", 8}
ensemble_b = {8, "orange", "kiwi"}
union = ensemble_a.union(ensemble_b)
print(union) # Affiche {'pomme', 'banane’, 8, 'orange', 'kiwi'}
Intersection : Trouve les éléments communs aux deux ensembles.

Exemple:
intersection = ensemble_a.intersection(ensemble_b)
print(intersection) # Affiche {8'}

99
Pr . A. Zannou FST d’ Al-Hoceima
Dictionnaires et Ensembles
 Ensembles - Opérations

Différence : Trouve les éléments qui sont dans le premier ensemble mais pas dans
le second.
Exemple:
ensemble_a = {"pomme", "banane", 8}
ensemble_b = {8, "orange", "kiwi"}
difference = ensemble_a.difference(ensemble_b)
print(difference) # Affiche {'pomme', 'banane'}

100
Pr . A. Zannou FST d’ Al-Hoceima
Dictionnaires et Ensembles
 Comparison

Caractéristique Dictionnaires Ensembles


Structure Paires clé-valeur Collection d'éléments uniques
Pas d'accès par index,
Accès aux données Par clés
vérification par valeur
Mutabilité Modifiables Modifiables
Non ordonnés (avant Python
Ordre 3.7), insertion ordonnée depuis Non ordonnés
Python 3.7
Stockage de données Vérification de l'appartenance,
Cas d'utilisation
associatives opérations ensemblistes

Ces concepts sur les dictionnaires et les ensembles en Python vous permettront de gérer
des collections de données de manière efficace et de les manipuler selon vos besoins.
Les dictionnaires sont idéaux pour les associations clé-valeur, tandis que les ensembles
sont utiles pour gérer des collections uniques et effectuer des opérations ensemblistes.

101
Pr . A. Zannou FST d’ Al-Hoceima
Dictionnaires et Ensembles
 Opérations possibles et Opérations non possibles

Ensembles (sets)
Opérations possibles :
 sum() (si les éléments sont numériques)
 max() (si les éléments sont comparables)
 min() (si les éléments sont comparables)
 sorted() (retourne une liste triée des éléments)
 len() (retourne le nombre d'éléments)
 add() (ajoute un élément)
 update() (ajoute plusieurs éléments)
 remove() (retire un élément, erreur si non présent)
 discard() (retire un élément, pas d'erreur si non présent)
 pop() (retire et retourne un élément arbitraire)
 Supprimer un élément (avec remove() ou discard())
Opérations non possibles :
 count()
 index()
 Slicing (ex. : tuple[start:end])
 Accès direct aux éléments
 append()
 extend()
 insert()
 sort()
 reverse()
 Modification directe des éléments (car les éléments doivent être immuables)

102
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 Introduction

La gestion des fichiers en Python permet de lire, écrire, et manipuler des fichiers sur le
disque. Python offre une interface simple pour interagir avec différents types de fichiers,
qu'ils soient texte ou binaire.
Ouverture et Fermeture de Fichiers
 Avant de lire ou écrire dans un fichier, il faut l'ouvrir en utilisant la fonction open().
 Après avoir terminé les opérations sur le fichier, il est important de le fermer en
utilisant la méthode close() pour libérer les ressources.

Syntaxe:
fichier = open("nom_du_fichier", "mode")
# Opérations sur le fichier
[Link]()

103
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 Modes d’ouverture

Exemple:
fichier = open("[Link]", "w")
[Link]("Bonjour, monde! \n Module de programmation \nCeci est une ligne ajoutée.")
[Link]()

Modes d'ouverture :

"r" : Lecture (mode par défaut). Le fichier doit exister.


"w" : Écriture. Crée un nouveau fichier ou écrase le contenu s'il existe déjà.
"a" : Ajout. Ajoute du contenu à la fin du fichier sans l'écraser.
"b" : Mode binaire. Utilisé pour les fichiers non-texte (images, vidéos, etc.).
"x" : Création exclusive. Crée un nouveau fichier et échoue si le fichier existe déjà.

Les fichiers binaires peuvent contenir divers types de données comme des images, des
vidéos, des fichiers audio, des fichiers exécutables ou des bases de données.
rb, wb, ab, xb

104
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 Lecture

Il existe plusieurs méthodes pour lire le contenu d'un fichier en Python.


 Lire tout le contenu : Utilisons read() pour lire tout le contenu du fichier sous
forme de chaîne de caractères.

Exemple:
fichier = open("[Link]", "r")
contenu = [Link]()
print(contenu)
[Link]()

105
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 Lecture

 Lire ligne par ligne : Utilisons readline() pour lire une ligne à la fois.

Exemple 1:
fichier = open("[Link]", "r")
ligne = [Link]()
print(ligne)
[Link]()

Bonjour, monde!

106
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 Lecture

Exemple 2:
fichier = open("[Link]", "r")
for i in range(3):
ligne = [Link]()
print(ligne)
[Link]()

Bonjour, monde!

Module de programmation

Ceci est une ligne ajoutée.

107
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 Lecture

 Lire toutes les lignes dans une liste : Utilisons readlines() pour lire toutes les
lignes du fichier et les stocker dans une liste.

Exemple:
fichier = open("[Link]", "r")
lignes = [Link]()
print(lignes)
[Link]()

['Bonjour, monde! \n', 'Module de programmation \n', 'Ceci est une ligne ajoutée.']

108
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 Ecriture

Nous pouvons écrire du texte dans un fichier en utilisant la méthode write().


 Écrire du texte :

Exemple:
fichier = open("[Link]", "w")
[Link]("Bonjour, monde! \n Module de programmation \n")
[Link]()

 Ajout du texte : Ouvrons le fichier en mode "a" pour ajouter du contenu à la fin
du fichier.

Exemple:
fichier = open("[Link]", "a")
[Link]("\nCeci est une ligne ajoutée.")
[Link]()

109
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 With

Utilisation de with pour gérer les fichiers


L'utilisation du mot-clé with permet de gérer automatiquement l'ouverture et la
fermeture des fichiers, même si une erreur se produit lors des opérations.

Exemple:
with open("[Link]", "r") as fichier:
contenu = [Link]()
print(contenu)

Explication : Le fichier est automatiquement fermé lorsque le bloc with est terminé,
même en cas d'erreur.

110
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 Manipulation Avancée des Fichiers

Lire et écrire des fichiers binaires : Utilisez le mode "rb" ou "wb" pour lire ou
écrire des fichiers binaires.

Exemple:
with open("[Link]", "rb") as fichier:
contenu = [Link]()
print(contenu)

L’affichage dans la console est une séquence incompréhensible de caractères


spéciaux et hexadécimaux, pas une image lisible.

111
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 Manipulation Avancée des Fichiers

Déplacer le curseur du fichier : Utilisons seek() pour déplacer le curseur du fichier à


une position spécifique.

Exemple:
fichier = open("[Link]", "r")
[Link](10) # Déplace le curseur à la 10ème position
contenu = [Link]()
print(contenu)
[Link]()

onde!
Module de programmation
Ceci est une ligne ajoutée.

112
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 Manipulation Avancée des Fichiers

Obtenir la position actuelle du curseur : Utilisez tell() pour obtenir la position actuelle
du curseur dans le fichier.

Exemple:
fichier = open("[Link]", "r")
[Link](10)
position = [Link]()
print( "Position ", position)
[Link](0)
position = [Link]()
Affichage:
print( "Position ", position) Position 10
[Link]() Position 0

113
Pr . A. Zannou FST d’ Al-Hoceima
Gestion de fichiers
 Suppression et renommage de fichiers

Pour manipuler les fichiers au niveau du système, Python fournit des fonctions via le
module os.
Supprimer un fichier : Utilisons [Link]() pour supprimer un fichier.

Exemple:
import os
[Link]("[Link]") # OU [Link]("D:/IDDL/[Link]")

Renommer un fichier : Utilisons [Link]() pour renommer un fichier.

Exemple:
import os
[Link]("[Link]", "nouveau_nom.txt")

114
Pr . A. Zannou FST d’ Al-Hoceima
Modules
 Introduction

Un module est simplement un fichier contenant du code Python. Ce code peut inclure
des fonctions, des classes, et des variables. En organisant le code en modules, nous
pouvons le structurer de manière plus claire et le réutiliser facilement dans d'autres
programmes.
Création d'un module :
• Créer un fichier Python avec un nom explicite, par exemple mon_module.py.
• Ajouter des fonctions ou des variables à ce fichier.
Exemple : Créer un fichier mon_module.py avec le contenu suivant :

def saluer(nom):
return f"Bonjour, {nom}!"
pi = 3.14159

115
Pr . A. Zannou FST d’ Al-Hoceima
Modules
 Module

Importer un Module
Une fois que nous avons créé un module, nous pouvons l'importer dans un autre
fichier Python en utilisant le mot-clé import.

Syntaxe:
import nom_du_module

Exemple:
import mon_module
print(mon_module.saluer("Alice")) # Affiche "Bonjour, Alice!"
print(mon_module.pi) # Affiche 3.14159

116
Pr . A. Zannou FST d’ Al-Hoceima
Modules
 Module

Importer des éléments spécifiques : Si nous ne voulons importer qu'une partie d'un module,
nous pouvons utiliser la syntaxe suivante :

Syntaxe:
from nom_du_module import fonction_ou_variable

Exemple:
from mon_module import saluer
print(saluer("Bob")) # Affiche "Bonjour, Bob!"
Renommer un module : nous pouvons renommer un module lors de son
importation avec le mot-clé as.

Exemple:
import mon_module as mm
print([Link]("Charlie")) # Affiche "Bonjour, Charlie!"
117
Pr . A. Zannou FST d’ Al-Hoceima
Modules
 Modules standard de Python

Python est livré avec de nombreux modules standard qui couvrent une large gamme
de fonctionnalités. Voici quelques-uns des modules les plus utilisés :
math : Fournit des fonctions mathématiques avancées.

Syntaxe:
import nom_du_module

Exemple:
import math
print([Link](16)) # Affiche 4.0
print([Link](5)) # Affiche 120

118
Pr . A. Zannou FST d’ Al-Hoceima
Modules
 Modules standard de Python

datetime : Gère les dates et les heures.

Exemple:
from datetime import datetime
maintenant = [Link]()
print(maintenant) # Affiche la date et l'heure actuelles

random : Génère des nombres aléatoires et effectue des sélections aléatoires.

Exemple:
import random
print([Link](1, 10)) # Affiche un nombre entier aléatoire entre 1 et 10
print([Link](1, 10)) # Affiche un nombre réel aléatoire entre 1 et 10
print([Link](["pomme", "banane", "cerise"])) # Sélectionne un élément aléatoire d'une liste

119
Pr . A. Zannou FST d’ Al-Hoceima
Modules
 Modules standard de Python

os : Interagit avec le système d'exploitation.

Exemple:
import os
print([Link]()) # Affiche le répertoire de travail actuel
[Link]("nouveau_dossier") # Crée un nouveau dossier

120
Pr . A. Zannou FST d’ Al-Hoceima
Packages
 Création

Un package est une collection de modules organisés en un seul répertoire. Les


packages sont utilisés pour organiser de grandes bases de code en modules logiques.
Création d'un Package :
• Créons un dossier, par exemple mon_package.
• Ajoutons un fichier __init__.py dans ce dossier (même vide, il indique que le
dossier est un package).
• Ajoutons d'autres modules dans ce dossier.

Exemple:
mon_package/
__init__.py
[Link]
[Link]

121
Pr . A. Zannou FST d’ Al-Hoceima
Packages
 Importation

Nous pouvons maintenant importer des modules du package :

Exemple:
from mon_package import module1, module2

122
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Définition

 La Programmation Orientée Objet (POO) est un paradigme de programmation qui


organise le code en utilisant des objets.
 Un objet est une instance d'une classe, qui est une structure permettant de
regrouper des données (attributs) et des fonctions (méthodes) qui manipulent ces
données.
 Python est un langage orienté objet, et il offre de nombreux outils pour utiliser ce
paradigme de manière efficace.

123
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Classe et objets

 Classe : Une classe est un plan ou un modèle à partir duquel des objets
peuvent être créés. Elle définit les attributs (propriétés) et les méthodes
(fonctions) que les objets de ce type posséderont.
 Objet : Un objet est une instance concrète d'une classe. Lorsqu'un objet est
créé à partir d'une classe, il hérite des attributs et méthodes définis par cette
classe

124
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Classe et objets

 Classe : Une classe est un plan ou un modèle à partir duquel des objets
peuvent être créés. Elle définit les attributs (propriétés) et les méthodes
(fonctions) que les objets de ce type posséderont.
 Objet : Un objet est une instance concrète d'une classe. Lorsqu'un objet est
créé à partir d'une classe, il hérite des attributs et méthodes définis par cette
classe

125
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Classe et objets

Exemple:
class Voiture:
def __init__(self, marque, modele, annee):
[Link] = marque
[Link] = modele
[Link] = annee
def demarrer(self):
print(f"La {[Link]} {[Link]} démarre.")
# Création d'objets (instances de la classe)
ma_voiture = Voiture("Toyota", "Corolla", 2020)
ta_voiture = Voiture("Honda", "Civic", 2019)
# Utilisation des méthodes
ma_voiture.demarrer() # Affiche : La Toyota Corolla démarre
ta_voiture.demarrer() # Affiche : La Honda Civic démarre

Dans cet exemple, Voiture est une classe. Les objets ma_voiture et ta_voiture sont des
instances de cette classe, avec des propriétés spécifiques (marque, modèle, année) et
une méthode (démarrer).
126
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Constructeur __init__

Le constructeur __init__
__init__ : C'est une méthode spéciale appelée constructeur. Elle est
automatiquement appelée lorsqu'une nouvelle instance de la classe est créée. Elle
sert à initialiser les attributs de l'objet.
Détails :
 La méthode __init__ permet de définir les valeurs initiales des attributs d'une
classe lorsqu'un objet est créé.
 Le mot-clé self dans les méthodes de classe fait référence à l'instance actuelle
de la classe. Il est utilisé pour accéder aux attributs et méthodes de l'objet dans
la classe.

127
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Constructeur __init__

Exemple:
class Personne:
def __init__(self, nom, age):
[Link] = nom # Attribut nom
[Link] = age # Attribut age

def saluer(self):
print(f"Bonjour, je m'appelle {[Link]} et j'ai {[Link]} ans.")
# Création d'un objet
individu = Personne("Alice", 30)
[Link]() # Affiche : Bonjour, je m'appelle Alice et j'ai 30 ans

Dans cet exemple, __init__ est utilisée pour initialiser les attributs nom
et age lorsque l'objet individu est créé.

128
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Encapsulation

L'encapsulation est un concept de la POO qui consiste à protéger les données d'une
classe en les rendant inaccessibles directement de l'extérieur. Cela permet de contrôler
l'accès aux attributs et méthodes.
Public : Les attributs et méthodes sont accessibles de l'extérieur de la classe. Par
défaut, tous les attributs et méthodes en Python sont publics.
Protégé : Les attributs et méthodes qui commencent par un underscore (_) sont
considérés comme protégés. Cela signifie qu'ils sont destinés à être utilisés à l'intérieur
de la classe et dans les classes dérivées, mais pas par des utilisateurs extérieurs.
Privé : Les attributs et méthodes qui commencent par deux underscores (__) sont
considérés comme privés. Cela renforce l'encapsulation en rendant ces attributs
accessibles uniquement à l'intérieur de la classe

129
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Encapsulation

Exemple 1: attribut privé


class CompteBancaire:
def __init__(self, solde):
self.__solde = solde # Attribut privé
def deposer(self, montant):
self.__solde += montant
def afficher_solde(self):
print(f"Solde : {self.__solde}")
# Création d'un objet
compte = CompteBancaire(1000)
[Link](500)
compte.afficher_solde() # Affiche "Solde : 1500"
# Essayer d'accéder directement à l'attribut privé provoque une erreur
# print(compte.__solde) # Provoque une erreur

Dans cet exemple, l'attribut __solde est privé et ne peut pas être modifié directement
de l'extérieur. Seules les méthodes deposer et afficher_solde permettent d'interagir
avec cet attribut.

130
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Encapsulation

Exemple 2: attribut public


class CompteBancaire:
def __init__(self, solde):
[Link] = solde # Attribut public
def deposer(self, montant):
[Link] += montant
def afficher_solde(self):
print(f"Solde : {[Link]}")
# Création d'un objet
compte = CompteBancaire(1000)
[Link](500)
compte.afficher_solde() # Affiche "Solde : 1500"
# Accéder directement à l'attribut public
print([Link]) # Affiche "1500"

131
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Héritage

L'héritage est un mécanisme qui permet à une classe (appelée classe enfant) d'hériter
des attributs et méthodes d'une autre classe (appelée classe parent). Cela favorise la
réutilisation du code et permet d'étendre des fonctionnalités sans les réécrire.
 Classe Parent : La classe de base dont les propriétés et méthodes sont héritées.
 Classe Enfant : La classe dérivée qui hérite des propriétés et méthodes de la classe
parent.

132
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Héritage

Syntaxe:
class ClasseEnfant(ClasseParent):
# Nouveaux attributs et méthodes spécifiques à ClasseEnfant

133
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Héritage

Exemple:
class AppareilElectronique:
def __init__(self, marque):
[Link] = marque
def allumer(self):
print(f"L'appareil {[Link]} est allumé.")

class Ordinateur(AppareilElectronique): # Ordinateur hérite d'AppareilElectronique


def lancer_programme(self, programme):
print(f"L'ordinateur {[Link]} lance {programme}.")

# Création d'un objet de la classe Ordinateur


mon_pc = Ordinateur("Dell")
mon_pc.allumer() # Appelle la méthode de la classe parent, affiche "L'appareil Dell est allumé."
mon_pc.lancer_programme("Python")
# Appelle la méthode spécifique à #Ordinateur, affiche "L'ordinateur Dell lance Python."

Ici, la classe Ordinateur hérite de la classe AppareilElectronique. L'objet mon_pc peut utiliser la méthode allumer
définie dans AppareilElectronique ainsi que la méthode lancer_programme propre à Ordinateur.
134
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Héritage : attribut protégé

Exemple: (attribut protégé)


class AppareilElectronique:
def __init__(self, marque):
self._marque = marque # Attribut protégé
def allumer(self):
print(f"L'appareil {self._marque} est allumé.")
class Ordinateur(AppareilElectronique): # Ordinateur hérite d'AppareilElectronique
def lancer_programme(self, programme):
print(f"L'ordinateur {self._marque} lance {programme}.")

# Création d'un objet de la classe Ordinateur


mon_pc = Ordinateur("Dell")
mon_pc.allumer() # Appelle la méthode de la classe parent, affiche "L'appareil Dell est allumé."
mon_pc.lancer_programme("Python")
# Appelle la méthode spécifique à Ordinateur, affiche "L'ordinateur Dell lance Python."

# Accès direct à l'attribut protégé (non recommandé)


print(mon_pc._marque) # Affiche "Dell", mais cet accès est déconseillé en dehors de la classe

Même si l'attribut _marque est protégé et accessible à l'extérieur, il est recommandé


de ne pas y accéder directement en dehors des classes où il est défini ou hérité.

135
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Polymorphisme

Le polymorphisme permet de traiter des objets de différentes classes de la même


manière, à condition qu'ils partagent certaines méthodes. Cela permet d'utiliser des
méthodes communes sans se soucier du type exact de l'objet.

136
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Polymorphisme

137
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Méthodes Spéciales (Méthodes Magiques)

 Les méthodes spéciales, ou méthodes magiques, sont des méthodes prédéfinies par
Python qui commencent et se terminent par des doubles underscores (__).
 Elles permettent de définir des comportements spéciaux pour les objets, comme leur
création, leur représentation en chaîne.
__init__ : Déjà discutée, c'est la méthode utilisée pour initialiser un objet lorsqu'il est
créé.
__str__ : Cette méthode est appelée pour obtenir une représentation en chaîne de l'objet,
souvent utilisée avec la fonction print.

138
Pr . A. Zannou FST d’ Al-Hoceima
POO en python
 Méthodes Spéciales (Méthodes Magiques)

Exemple 1 ( sans utiliser str)

Affichage

Exemple 2 (utiliser str)

Affichage

139
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Introduction

 NumPy (Numerical Python) est une bibliothèque essentielle pour le calcul


numérique en Python.
 Elle offre des structures de données puissantes, notamment des tableaux
monodimensionnels et multidimensionnels.
 NumPy fournit également une collection de fonctions mathématiques pour manipuler
ces tableaux de manière efficace.

140
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Tableaux

Le tableau « array en anglais » de NumPy est une structure de données pour stocker des
éléments de même type, indexés par une séquence d'entiers. Contrairement aux listes
Python, les tableaux NumPy sont beaucoup plus efficaces pour les opérations
numériques.

Exemple:
import numpy as np
# Création d'un tableau 1D (vecteur)
a = [Link]([1, 2, 3, 4])
print(a)

[1 2 3 4]

141
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Type de données

Les tableaux NumPy peuvent stocker des données de différents types (int, float,str
complex, etc.). Nous pouvons spécifier le type de données lors de la création du
tableau.
Exemple : Spécification du Type de Données
Exemple:
b = [Link]([1, 2, 3], dtype=float)
print(b)

[1. 2. 3.]

142
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Opérations Mathématiques sur les Tableaux

NumPy permet de réaliser des opérations élémentaires de manière vectorisée, c'est-à-


dire directement sur les tableaux sans nécessiter de boucles explicites.

143
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Opérations Mathématiques sur les Tableaux

Exemple 1

144
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Opérations Mathématiques sur les Tableaux
import numpy as np
Exemple 1 (suite) c = [Link]([9, 4, 1, 16])

145
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Indexation et Slicing

Nous pouvons accéder aux éléments d'un tableau NumPy en utilisant l'indexation,
tout comme pour les listes Python. NumPy permet également de faire du slicing
pour accéder à des sous-parties du tableau.
Exemple 2 :

146
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Indexation et Slicing

147
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Tableaux Multidimensionnels

Les tableaux NumPy peuvent être de n dimensions. Les tableaux 2D (matrices) sont
particulièrement courants.

148
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Tableaux Multidimensionnels

Exemple 3

149
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Manipulation de Formes

Nous pouvons modifier la forme d'un tableau en utilisant des fonctions

 reshape : Change la forme d’un tableau sans en modifier les données, permettant de
réorganiser ses dimensions.
 flatten : Convertit un tableau multidimensionnel en un tableau 1D, ce qui simplifie les
opérations sur les éléments.
 concatenate : Concatène plusieurs tableaux le long d’un axe donné, permettant de
combiner plusieurs tableaux en un seul.
 transpose : Transpose les dimensions d’un tableau, utile pour les opérations
matricielles.

150
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Manipulation de Formes

Exemple 4

151
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Manipulation de Formes

152
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Tableaux spéciaux

NumPy propose des fonctions pour créer des tableaux spéciaux, comme des tableaux
de zéros, de uns, ou des tableaux identités.

153
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Tableaux spéciaux

Exemple 5

154
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Tableaux spéciaux

Exemple 5 (Suite)

155
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Randomisation

NumPy propose un module random pour générer des nombres aléatoires, des
échantillons, et plus encore.

Exemple 1 : Génération de Nombres Aléatoires


# Générer un tableau 2x3 de nombres aléatoires uniformément
distribués entre 0 et 1
random_array = [Link](2, 3)
print(random_array)

[[0.11827443 0.63992102 0.14335329]


[0.94466892 0.52184832 0.41466194]]

156
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Randomisation

Exemple 6

157
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Calcul sur les Axes

NumPy vous permet d'effectuer des calculs sur des axes spécifiques dans des tableaux
multidimensionnels. Par exemple, vous pouvez calculer la somme de chaque colonne
ou ligne d'une matrice.

158
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Masquage et Filtrage

Nous pouvons filtrer les éléments d'un tableau en utilisant des masques, c'est-à-dire
des tableaux de booléens qui indiquent quels éléments sont sélectionnés.

159
Pr . A. Zannou FST d’ Al-Hoceima
Analyse de données avec Numpy
 Algebra Linéaire

NumPy offre de nombreuses fonctions pour l'algèbre linéaire, comme le produit


matriciel, la décomposition en valeurs singulières, etc.

Exemple: Produit Matriciel


o = [Link]([[1, 2], [3, 4]])
p = [Link]([[5, 6], [7, 8]])
# Produit matriciel
result = [Link](o, p)
print(result)

[[19 22]
[43 50]]

160
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Introduction

 Pandas est une bibliothèque Python conçue pour faciliter la manipulation et


l'analyse des données. Elle fournit des structures de données comme les
DataFrames et les Series qui sont rapides, flexibles et faciles à utiliser.
 Pandas est particulièrement utile pour les opérations de nettoyage, d'analyse
exploratoire des données, et pour la préparation des données avant de les passer à
un modèle de machine learning/deep learning.

161
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Structures de Données : Series

Une Series est une structure de données unidimensionnelle similaire à une liste, mais
avec des fonctionnalités supplémentaires. Chaque élément d'une Series est indexé.

Exemple: Création d'une Series


import pandas as pd
# Création d'une Series
s = [Link]([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s)
a 10
b 20
c 30
d 40
dtype: int64

162
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Structures de Données : Series

Exemple: Création d'une Series sans spécifier les index


import pandas as pd
# Création d'une Series
s = [Link]([10, 20, 30, 40])
print(s)

0 10
1 20
2 30
3 40
dtype: int64

163
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Structures de Données : Series

Exemple: Création d'une Series depuis un dictionnaire


import pandas as pd
data = {'a': 100, 'b': 200, 'c': 300}
s = [Link](data)
print(s)

a 100
b 200
c 300
dtype: int64

164
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Structures de Données : Series

Exemple*: Création d'une Series depuis un tuple


import pandas as pd
# Création d'un tuple

data = (100, 200, 300)


# Création de la Series depuis le tuple avec des index personnalisés

s = [Link](data)
print(s)

0 100
1 200
2 300
dtype: int64

165
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Structures de Données : DataFrame

Un DataFrame est une structure de données bidimensionnelle (comme une table ou


une feuille de calcul) qui peut contenir des colonnes de différents types (entiers,
flottants, chaînes de caractères, etc.).
Exemple: Création d'un DataFrame
import pandas as pd
data = {
'Nom': ['Alice', 'Bob', 'Charlie'],
'Âge': [25, 30, 35],
'Ville': ['Paris', 'Lyon', 'Marseille']
}
df = [Link](data)
print(df)

Nom Âge Ville


0 Alice 25 Paris
1 Bob 30 Lyon
2 Charlie 35 Marseille
166
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fichiers en pandas

Exemple: Écriture dans un fichier CSV


data = {
'Nom': ['Alice', 'Bob', 'Charlie'],
'Âge': [25, 30, 35],
'Ville': ['Paris', 'Lyon', 'Marseille']
}
df = [Link](data)
# Écriture dans un fichier CSV
df.to_csv('[Link]', index=False) # index=False pour éviter d'inclure l'index

Nom,Âge,Ville
Alice,25,Paris
Bob,30,Lyon
Charlie,35,Marseille

167
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fichiers en pandas

Exemple: Écriture dans un fichier xlsx


data = {
'Nom': ['Alice', 'Bob', 'Charlie'],
'Âge': [25, 30, 35],
'Ville': ['Paris', 'Lyon', 'Marseille']
}
df = [Link](data)
# Écriture dans un fichier xlsx
df.to_excel('[Link]', index=False) # index=False pour éviter d'inclure l'index

168
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fichiers en pandas

Exemple: Écriture dans un fichier JSON


data = {
'Nom': ['Alice', 'Bob', 'Charlie'],
'Âge': [25, 30, 35],
'Ville': ['Paris', 'Lyon', 'Marseille']
}
df = [Link](data)
# Écriture dans un fichier JSON
df.to_json('[Link]', orient='records') # index=False pour éviter d'inclure l'index

[
{"Nom":"Alice","Âge":25,"Ville":"Paris"},
{"Nom":"Bob","Âge":30,"Ville":"Lyon"},
{"Nom":"Charlie","Âge":35,"Ville":"Marseille"}
]
169
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fichiers en pandas

# Écriture dans un fichier JSON


df.to_json('[Link]', orient='records')

Le paramètre orient dans la méthode to_json() de Pandas contrôle la manière dont les
données du DataFrame sont structurées dans le fichier JSON. En d'autres termes, il
détermine l'organisation et le format du fichier JSON généré.

170
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fichiers en pandas

Valeurs possibles de orient et leurs significations


Valeur de orient Description Structure JSON générée

Chaque ligne du DataFrame est convertie en un objet JSON (dictionnaire). Le fichier JSON [{"col1": valeur1, "col2": valeur2}, {"col1": valeur3,
'records'
final est une liste de ces objets. "col2": valeur4}]

{"index": [...], "columns": ["col1", "col2"], "data":


'split' Divise le DataFrame en trois composants : index, columns, et data.
[[val1, val2], [val3, val4]]}

Les données sont organisées en dictionnaires imbriqués, où les index du DataFrame servent {"index1": {"col1": valeur1, "col2": valeur2}, "index2":
'index'
de clés principales. {"col1": valeur3, "col2": valeur4}}

Les colonnes deviennent les clés principales. Chaque clé contient un dictionnaire où les {"col1": {"index1": valeur1, "index2": valeur3}, "col2":
'columns'
index servent de sous-clés. {"index1": valeur2, "index2": valeur4}}

Les données sont représentées comme une liste de listes, chaque sous-liste correspondant à
'values' [[valeur1, valeur2], [valeur3, valeur4]]
une ligne du DataFrame.

Génère une structure au format JSON Schema (idéal pour les bases de données {"schema": {...}, "data": [{"col1": valeur1, "col2":
'table'
relationnelles ou les frameworks JSON). valeur2}, {"col1": valeur3, "col2": valeur4}]}

171
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fichiers en pandas

Écriture du DataFrame dans un fichier texte avec un séparateur personnalisé

Exemple: Écriture dans un fichier CSV


data = {
'Nom': ['Alice', 'Bob', 'Charlie'],
'Âge': [25, 30, 35],
'Ville': ['Paris', 'Lyon', 'Marseille']
}
df = [Link](data)
# Écriture du DataFrame dans un fichier texte avec le séparateur '|’
df.to_csv('[Link]', sep='|', index=False) # index=False pour éviter d'inclure l'index

Nom|Âge|Ville
Alice|25|Paris
Bob|30|Lyon
Charlie|35|Marseille
172
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fichiers en pandas

Encodage des Données : Exportation en Formats CSV et JSON avec Python


# Écriture en CSV
df.to_csv('exercice_data.csv', index=False, encoding='utf-8’)
# Écriture en JSON
df.to_json('exercice_data.json', orient='records', force_ascii=False)
#Ou
df.to_json('exercice_data.json', orient='records', encoding='utf-8')

173
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Exploration de données

Une liste complète des fonctions d'exploration de données disponibles dans un


DataFrame Pandas. Ces fonctions sont essentielles pour comprendre la structure,
le contenu et les statistiques descriptives des données avant de procéder à une
analyse ou un traitement.

174
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Exploration de la structure du DataFrame

Taille et forme
 [Link] : Renvoie le nombre de lignes et de colonnes sous forme d'un tuple
(lignes, colonnes).
 [Link] : Renvoie le nombre total d'éléments dans le DataFrame (lignes ×
colonnes).
 [Link] : Renvoie le nombre de dimensions (2 pour un DataFrame).
Noms des colonnes et des index
 [Link] : Renvoie les noms des colonnes.
 [Link] : Renvoie les index des lignes.
 [Link] : Affiche le type de données de chaque colonne.
Aperçu des données
 [Link](n) : Renvoie les premières n lignes (par défaut, n=5).
 [Link](n) : Renvoie les dernières n lignes.
 [Link](n) : Renvoie un échantillon aléatoire de n lignes

175
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Résumé de données

Informations générales
 [Link]() : Affiche un résumé du DataFrame, y compris le type de données, le
nombre de valeurs non nulles et la mémoire utilisée.
Statistiques descriptives
 [Link]() : Calcule des statistiques descriptives pour les colonnes
numériques (moyenne, écart type, min, max, quartiles).
 [Link](include='all') : Inclut toutes les colonnes, y compris les colonnes
non numériques.
 [Link]() : Calcule la matrice de corrélation entre les colonnes numériques.
 [Link]() : Calcule la matrice de covariance entre les colonnes numériques.

176
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Exploration des valeurs

Valeurs uniques
 df['colonne'].unique() : Renvoie les valeurs uniques d'une colonne.
 df['colonne'].nunique() : Renvoie le nombre de valeurs uniques dans une
colonne.
Comptage des occurrences
 df['colonne'].value_counts() : Compte le nombre d'occurrences de chaque
valeur dans une colonne.

177
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Détection des valeurs manquantes

Vérification
 [Link]() : Renvoie un DataFrame booléen indiquant où se trouvent les valeurs
manquantes.
 [Link]() : Renvoie un DataFrame booléen indiquant où les valeurs ne sont
pas manquantes.
Somme des valeurs manquantes
 [Link]().sum() : Renvoie le nombre de valeurs manquantes pour chaque
colonne.
 [Link]().any() : Renvoie True pour les colonnes contenant au moins une
valeur manquante.

178
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Exploration des types de données

Conversion de types
 [Link](dtype) : Convertit une colonne ou un DataFrame vers un type
spécifique (par exemple, float, int, category).
Filtrage par type
 df.select_dtypes(include=[type]) : Filtre les colonnes correspondant à un type
donné (par exemple, include=['number'] pour les colonnes numériques).
 df.select_dtypes(exclude=[type]) : Exclut les colonnes d'un type donné.

179
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Exploration des relations entre les colonnes

Corrélations
 [Link]() : Calcule les corrélations de (Pearson par défaut) entre les colonnes
numériques.
 [Link](other) : Calcule les corrélations entre le DataFrame et une autre
série ou DataFrame.
Comptage des doublons
 [Link]() : Identifie les lignes dupliquées.
 df.drop_duplicates() : Supprime les lignes dupliquées.

180
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Exploration avancée des distributions

Somme, moyenne et médiane


 [Link]() : Calcule la somme des valeurs de chaque colonne.
 [Link]() : Calcule la moyenne des valeurs.
 [Link]() : Calcule la médiane des valeurs.
Quantiles
 [Link](q) : Calcule le quantile q des colonnes numériques (par exemple,
q=0.5 pour la médiane).
Écart-type, variance
 [Link]() : Calcule l'écart type des colonnes numériques. [Link]() : Calcule la
variance des colonnes numériques.

181
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Exploration des colonnes catégoriques

Distribution des catégories


 df['colonne'].value_counts() : Compte les occurrences de chaque catégorie
dans une colonne.
 df['colonne'].unique() : Liste les catégories uniques.

182
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Sélection des colonnes

Sélection d'une seule colonne


 df['colonne']
Sélection de plusieurs colonnes
 df[['colonne1', 'colonne2’]]
Sélection des colonnes par type :
Inclure un type
 df.select_dtypes(include=['type’])
Exclure un type
 df.select_dtypes(exclude=['type'])

183
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Sélection des lignes

Par position numérique avec iloc :


Une ligne spécifique :
 [Link][position]
Plusieurs lignes (par intervalle)
 [Link][start:stop]
Par étiquette avec loc :
Une ligne par index :
 [Link][index]
Plusieurs lignes avec une condition :
 [Link][condition]
Par index numérique directement :
 df[start:stop]

184
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Filtrage des données

Condition simple :
 df[df['colonne'] condition valeur]
 Exemple : df[df['colonne'] > 10]
Conditions combinées avec des opérateurs logiques :
ET (&) :
 df[(df['colonne1'] condition1) & (df['colonne2'] condition2)]
OU (|) :
 df[(df['colonne1'] condition1) | (df['colonne2'] condition2)]
NON (~) :
 df[~(condition)]
Filtrage par liste de valeurs :
 df[df['colonne'].isin([valeur1, valeur2])]

185
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Sélection de sous-ensembles

Sélection conditionnelle avec des colonnes spécifiques :


 [Link][condition, ['colonne1', 'colonne2']]

186
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Application d’une fonction

Appliquer une fonction sur une colonne :


 df['colonne'].apply(fonction)
Appliquer une fonction sur plusieurs colonnes :
 df[['colonne1', 'colonne2']].applymap(fonction)

187
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Sélectionner un échantillon aléatoire

 [Link](n)

188
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Gestion des doublons

Identifier les doublons :


 [Link]()
Supprimer les doublons :
 df.drop_duplicates()

189
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Filtrage avancé

Filtrage basé sur le type des colonnes :


 df.select_dtypes(include=['type’])
Filtrage par statistiques descriptives :
 df[df['colonne'] > df['colonne'].mean()]

190
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Ajout et Suppression de Données

Ajouter ou supprimer des colonnes et des lignes dans un DataFrame.

Exemple: Ajout de Colonnes


# Ajouter une nouvelle colonne "Salaire"
df['Salaire'] = [50000, 60000, 70000]
print(df)

Exemple: Suppression de Colonnes


# Supprimer la colonne "Ville"
df = [Link](columns=['Ville'])
print(df)

Exemple: Suppression de lignes


# Supprimer la première ligne
df = [Link](index=0)
print(df)
191
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Opérations sur les Données

Pandas offre une variété de méthodes pour effectuer des opérations sur les données,
comme l'agrégation, le regroupement, la fusion, etc.
Agrégation

Exemple : Calculer la moyenne d'une colonne


print(df['Âge'].mean()) # Moyenne d'âge

GroupBy

Regrouper les données par une colonne et appliquer des opérations d'agrégation.

Exemple : GroupBy et Agrégation


grouped = [Link]('Âge').sum()
print(grouped)

192
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fusion

La fusion de DataFrames est une opération essentielle en manipulation de données. Elle


permet de combiner plusieurs tableaux en fonction d'une ou plusieurs colonnes
communes ou de conditions spécifiques. Cette fonctionnalité est disponible dans
pandas via la méthode [Link].

193
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fusion

La fusion est similaire aux opérations de jointure dans les bases de données
relationnelles (ex. SQL).
 Clé de jointure : colonne(s) commune(s) sur lesquelles la fusion est effectuée.
 Type de jointure : détermine comment les lignes des DataFrames sont combinées :
• Inner Join (par défaut) : conserve uniquement les lignes présentes dans les
deux DataFrames.
• Outer Join : conserve toutes les lignes des deux DataFrames, même celles sans
correspondance.
• Left Join : conserve toutes les lignes du DataFrame de gauche, même si elles
n'ont pas de correspondance dans celui de droite.
• Right Join : conserve toutes les lignes du DataFrame de droite, même si elles
n'ont pas de correspondance dans celui de gauche

194
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fusion

Exemple : Fusion de DataFrames


df1 = [Link]({'Nom': ['Alice', 'Bob'], 'Âge': [25, 30]})
df2 = [Link]({'Nom': ['Alice'], 'Ville': ['Paris']})
merged_df = [Link](df1, df2, on='Nom', how='inner')
print(merged_df)

Nom Âge Ville


0 Alice 25 Paris

195
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fusion

Exemple : Fusion de DataFrames


df1 = [Link]({'Nom': ['Alice', 'Bob'], 'Âge': [25, 30]})
df2 = [Link]({'Nom': ['Alice'], 'Ville': ['Paris']})
merged_df = [Link](df1, df2, on='Nom', how='outer')
print(merged_df)

Nom Âge Ville


0 Alice 25 Paris
1 Bob 30 NaN

196
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fusion

Exemple : Fusion de DataFrames


df1 = [Link]({'Nom': ['Alice', 'Bob'], 'Âge': [25, 30]})
df2 = [Link]({'Nom': ['Alice'], 'Ville': ['Paris']})
merged_df = [Link](df1, df2, on='Nom', how='right')
print(merged_df)

Nom Âge Ville


0 Alice 25 Paris

197
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Fusion

Exemple : Fusion de DataFrames


df1 = [Link]({'Nom': ['Alice', 'Bob'], 'Âge': [25, 30]})
df2 = [Link]({'Nom': ['Alice'], 'Ville': ['Paris']})
merged_df = [Link](df1, df2, on='Nom', how='left')
print(merged_df)

Nom Âge Ville


0 Alice 25 Paris
1 Bob 30 NaN

198
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Manipulation des Dates

Pandas est très puissant pour travailler avec des données temporelles. Pandas permet
facilement de convertir des colonnes en format date et effectuer des opérations sur
ces données.

Exemple : Convertir une colonne contenant des dates sous forme de chaînes en objets
datetime
data = {'Date': ['2023-11-15', '2024-01-01', '2024-02-30']}
# Conversion en format datetime

df = [Link](data)
# Remplace les dates invalides par NaT

df['Date'] = pd.to_datetime(df['Date'], errors='coerce’)


print(df)
Date
0 2023-11-15
1 2024-01-01
2 NaT
199
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Manipulation des Dates

 Année : df['Date'].[Link]
Année de la date (ex. 2024)
 Mois : df['Date'].[Link]
Mois (1-12)
 Nom du mois : df['Date'].dt.month_name()
Nom complet du mois (ex. November)
 Jour : df['Date'].[Link]
Jour du mois (1-31)
 Jour de l'année : df['Date'].[Link]
Numéro du jour dans l’année (1-365/366)

200
Pr . A. Zannou FST d’ Al-Hoceima
Bibliothèque pandas
 Manipulation des Dates

 Jour de la semaine (nom) : df['Date'].dt.day_name()


Nom du jour de la semaine (ex. Friday)
 Jour de la semaine (numéro) : df['Date'].[Link]
Numéro (0=lundi, 6=dimanche)
 Heure : df['Date'].[Link]
Heure (0-23)
 Minute : df['Date'].[Link]
Minute (0-59)
 Seconde : df['Date'].[Link]
Seconde (0-59)

201
Pr . A. Zannou FST d’ Al-Hoceima

Vous aimerez peut-être aussi