Académique Documents
Professionnel Documents
Culture Documents
PYTHON
Présenté par Ismael B. TIMITE
Décembre 2019
1
11/03/2021
PYTHON
PYTHON
§ Outils de visualisations
§ Modules, Packages, Frameworks
§ Différentes implémentations :
§ Jython (Java), Iron Python (C# .Net) PyObjc (ObjectiveC), pyJs, cython
2
11/03/2021
INSTALLATION
Python, Anaconda, Editeur de texte, Documentation
INSTALLATION
§ Exécution Anaconda
https://docs.python.org/3.6/index.html
3
11/03/2021
SYNTAXE
§ Illustration de syntaxe
variable = valeur
§ Lien
https://docs.python.org/3/reference/lexical_analysis.html#keywords
INTERPRETEUR
~ python -V
~ python
4
11/03/2021
EXPRESSION
§ Evaluer
une expression
>>> 9-2
§ Afficher
avec la fonction PRINT
>>> print(2)
§ Evaluer
une expression et la retourner avec PRINT
>>> print(5*6)
JUPYTER NOTEBOOK
§ Environnement de programmation
§ NoteBook (extension .ipynb)
§ Possibilité d’interlacer du texte et du code
§ Exécution des cellules individuellement et dans l’ordre
souhaité
§ Partage des Notebook
§ Idéal pour des expériences, notamment en Data Science
§ Extension à d’autres languages (Julia, Python, R) -> Jupyter
10
10
5
11/03/2021
JUPYTER NOTEBOOK
11
11
OPERATEURS ARITHMETIQUES
Opérateurs arithmétiques, Affectation de variables
12
6
11/03/2021
OPERATEURS ARITHMETIQUES
§ Principaux opérateurs :
§ Addition +
§ Soustraction –
§ Multiplication *
§ Division / et division entière //
§ Exposant **
§ Parenthèses ()
§ Reste de la division %
13
13
AFFECTATION DE VARIABLES
§ Operateur d’affectation =
§ Syntaxe
variable = valeur
https://docs.python.org/3/reference/lexical_analysis.html#keywords
14
14
7
11/03/2021
AFFECTATION DE VARIABLES
15
15
AFFECTATION DE VARIABLES
>>> a , b = 1 , 2
16
16
8
11/03/2021
CHAINE DE CARACTERES
Affectation, Concaténation, Indexation, Méthodes diverses, Formatage
17
18
9
11/03/2021
>>> print(r"c:\desktop\nouveau")
19
19
\t \n \‘ \“ \000 \xhh
Tabulation Nouvelle ligne Caractère avec Caractère avec
la valeur octale la valeur hex HH
000
20
20
10
11/03/2021
21
21
22
11
11/03/2021
23
23
§ Ancienne syntaxe
§ Nouvelle syntaxe
24
24
12
11/03/2021
§ Padding et Alignement
>>> '{:>10}'.format('test’)
>>> '{:10}'.format('test’)
>>> '{:_<10}'.format('test’)
>>> '{:^10}'.format('test')
25
25
§ Troncation
>>> '{:.5}'.format('xylophone')
>>> '{:10.5}'.format('xylophone')
26
26
13
11/03/2021
>>> '{:d}'.format(42)
>>> '{:f}'.format(3.141592653589793)
>>> '{:4d}'.format(42)
>>> '{:06.2f}'.format(3.141592653589793)
>>> '{:04d}'.format(42)
>>> '{:+d}'.format(42)
§ Nombres signés
>>> '{:+d}'.format(42)
>>> '{: d}'.format((- 23))
>>> '{: d}'.format(42)
27
27
§ Named placeholders
28
28
14
11/03/2021
LISTE
Création, Accès aux éléments, Fonction Enumerate, Slicing, Méthodes diverses
29
LISTE
list = []
list.append(variable)
30
30
15
11/03/2021
LISTE
31
31
villes
index 0 1 2
valeur Abidjan Bouake Daloa
list[i]
32
32
16
11/03/2021
S T A T I S T I Q U E
0 1 2 3 4 5 6 7 8 9 10
-11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
33
33
FONCTION ENUMERATE
§ Exemple
for index, value in enumerate([‘Abidjan‘,’Daloa‘,‘Man‘]) :
print(index, value)
§ Résultat
0 Abidjan
1 Daloa
2 Man
34
34
17
11/03/2021
SLICING
§ Permet de retourner les éléments d’une liste entre les index fournis
§ La valeur située au dernier index ne sera pas retournée
list[index_debut:index_fin]
35
35
SLICING
36
36
18
11/03/2021
37
37
38
38
19
11/03/2021
39
39
40
40
20
11/03/2021
TUPLE
Création, Immutabilité, Sequence packing & unpacking
41
TUPLE
§ Eléments indexés
>>> t[1]
>>> z = t, (8, 9)
>>> y = t, 8,9 # Noter la différence entre y et z
42
42
21
11/03/2021
TUPLE
>>> t[2]= 10
43
43
§ Packing
>>> t = 1 , 2 , 3
§ Unpacking
>>> x , y , z = t
44
44
22
11/03/2021
SET
45
SET
46
46
23
11/03/2021
SET
>>> print(basket)
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # éléments uniques de a
>>> a – b # éléments dans a mais pas dans b
>>> a | b # éléments dans a ou b
>>> a & b # éléments à la fois dans a et b
>>> a ^ b # éléments dans a ou b, mais pas dans les deux
47
47
DICTIONNAIRE
Création, Accès aux éléments, Opérations basiques, Boucle, Constructeur dict()
48
24
11/03/2021
DICTIONNAIRE
§ Ensemble de clé/valeurs
§ Exemples:
§ Etudiants et leurs notes
§ Villes et leur population
§ Personnes et leurs informations
49
49
DICTIONNAIRE
d = {}
§ Ajouter un élément
d[cle] = valeur
50
50
25
11/03/2021
DICTIONNAIRE
d[cle]
d[cle] = nouvelle_valeur
51
51
52
52
26
11/03/2021
53
53
villes = {
“abidjan“: 5000000,
“bouake“: 3000000,
“daloa“: 1500000
}
54
54
27
11/03/2021
villes = {
“abidjan“: 5000000,
“bouake“: 3000000,
“daloa“: 1500000
}
55
55
CONSTRUCTEUR DICT()
56
56
28
11/03/2021
INDENTATION
Ou la structuration du code Python
57
BLOCK
begin … end
do … done
{…}
if … fi
58
58
29
11/03/2021
59
59
INDENTATION
60
60
30
11/03/2021
EXEMPLES D’INDENTATION
61
61
FICHIERS ET ITERATIONS
Lecture de fichier, For, While,
62
31
11/03/2021
LIRE UN FICHIER
§ Le nom du fichier
63
63
LIRE UN FICHIER
a = open(fichier, mode=‘r’)
contenu = a.read()
print(contenu)
64
64
32
11/03/2021
LIRE UN FICHIER
65
65
LIRE UN FICHIER
§ Cas de la séquence \n
§ Fichier crime_rates.csv
66
66
33
11/03/2021
LIRE UN FICHIER
67
67
BOUCLE FOR
Exemple
villes = ['Man', 'Daloa', 'Abidjan', 'Odienne']
for ville in villes :
print(ville)
§ Action : Récupérer dans une liste nommée liste_villes, toutes les lignes du
fichier sous la forme de listes elles-mêmes
68
68
34
11/03/2021
BOUCLE FOR…ELSE
69
69
§ Bracket notation
liste[i][j]…[n]
70
70
35
11/03/2021
CONVERSION DE TYPES
71
71
BOUCLE WHILE
while expression:
instructions
72
72
36
11/03/2021
BOUCLE WHILE…ELSE
while expression:
instructions
else:
instructions
73
73
§ break
§ Uniquement dans les boucles FOR et WHILE
§ Interrompt la boucle FOR ou WHILE la plus profonde
§ continue
§ Fait passer la boucle à son itération suivante
§ pass
§ Ne fait rien. Permet d’écrire des syntaxes correctes sans effectuer
d’action
74
74
37
11/03/2021
RANGE
75
75
RANGE
§ Dans les versions de Python 3.x, range génère une séquence. Afin d’obtenir
une liste, il vous faudra donc ajouter une conversion en liste
list(range(….))
76
76
38
11/03/2021
77
§ Quelques opérateurs:
78
78
39
11/03/2021
§ Operateur IF pour exécuter des instructions lorsqu’une condition est vraie (True)
Syntaxe1
if variable1 operateur variable2 :
instructions
Syntaxe 2
if condition :
instructions
Syntaxe 3
if variable1 is boolean :
instructions
79
79
if condition :
if condition :
instructions
80
80
40
11/03/2021
§ Un jeu d’instructions pour le corps d’une boucle (FOR) peut également être
un block IF, ou inversément
81
81
ACTIVITE 1
82
82
41
11/03/2021
ACTIVITE 2
§ Dataset unisex_names_table.csv
§ Actions :
1. Ouvrir le fichier en lecture et assigner le contenu à la variable ‘contenu’
2. Convertir ‘contenu’ en une liste de listes nommée ‘liste_str_noms’. Afficher les
5 premiers éléments, puis la valeur de la 2e colonne (prénom) du 4e élément
3. Créer une nouvelle liste ‘liste_noms’ en convertissant les valeurs dans
’liste_str_noms’ pour ne conserver que le prénom en String, et les autres
valeurs devenant des Float.
4. Créer une liste contenant uniquement les prénoms partagés par moins de
1000 personnes
5. Créer une liste contenant uniquement les prénoms partagés par plus de 1000
personnes
83
83
IF … ELIF …ELSE
§ L’expression du IF est débord évaluée. Si elle est vraie, ses instructions sont
exécutées.
§ Sinon, les expressions suivantes pour les block ELIF sont exécutées jusqu’à ce
qu’une soit vraie
§ Si toutes les expressions sont fausses, alors les instructions de la clause ELSE, si
elle existe, sont exécutées.
if expression1 :
instructions1
elif expression2:
instructions2
…
elif expressionN:
instructionsN
else:
instructionsELSE
84
84
42
11/03/2021
TESTS MULTIPLES
Syntaxe :
if condition1 & condition2:
instructions
if condition3 | condition4:
instructions
85
85
FONCTION
86
43
11/03/2021
FONCTION
§ Fichier movie_metadata.csv
§ Objectif :
1. Créer une liste (movie_data) de listes contenant les données du fichier
2. Afficher les 5 premières lignes du fichier
87
87
FONCTION - AVANTAGES
§ Réusabilité
§ Facilité à maintenir
88
88
44
11/03/2021
FONCTION
89
89
FONCTION
90
90
45
11/03/2021
FONCTION
91
91
ACTIVITE 1
92
92
46
11/03/2021
ACTIVITE 2
>>> movies_data[17]
93
93
ACTIVITE 2
94
94
47
11/03/2021
ACTIVITE 3
95
95
96
96
48
11/03/2021
if __name__ == "__main__":
print("Formation Python")
$ python script.py
97
97
PASSAGE D’ARGUMENTS
import sys
if __name__ == "__main__":
print(sys.argv[1])
§ Utilisation
98
49
11/03/2021
99
NAMESPACE
100
100
50
11/03/2021
SCOPE
101
101
SCOPE
§ Exemple
a = 1
def fonction1():
a = 2
print(a, ‘fonction 1’)
102
102
51
11/03/2021
SCOPE
§ Règle LEGB
§ Local : à l’intérieur d’une fonction ou d’une méthode de classe
§ Enclosed : à l’intérieur de la fonction encapsulatrice
§ Global : niveau supérieur d’exécution du script
§ Built-in : objets réservés de Python
§ Error : Au cas où l’objet n’est retrouvé nulle part
103
103
§ Local / Global
a = 1
def fonction1():
a = a*2
# instructions
def fonction2():
c = 3
# instructions
104
104
52
11/03/2021
a_var = ‘global’
def fonction1():
global a_var
a_var = ‘local’
print(a_var, ‘ dans la fonction1()’)
105
105
SCOPE (LEG)
106
53
11/03/2021
107
SCOPE (LEGB)
108
108
54
11/03/2021
ERREURS DE DEBOGAGE
109
ERREURS
110
110
55
11/03/2021
ERREURS
https://docs.python.org/3/library/exceptions.html#IndentationError
111
111
QUELQUES EXEMPLES
112
112
56
11/03/2021
QUELQUES EXEMPLES
113
113
COMPREHENSIONS
114
114
57
11/03/2021
COMPREHENSION DE LISTE
>>> longueurs_villes = []
>>> for ville in villes:
>>> longueurs_villes.append(len(ville))
115
115
COMPREHENSION DE LISTE
116
116
58
11/03/2021
ACTIVITE
117
117
NONE
118
118
59
11/03/2021
NONE
119
119
NONE
§ None indique que la variable n’a pas de valeur. Son type est
NoneType
120
120
60
11/03/2021
NONE
>>> a = None
>>> a > 1
121
121
NONE
122
122
61
11/03/2021
ACTIVITE
123
COMPREHENSION DE DICTIONNAIRES
>>> villes = {
“abidjan“: 5000000,
“bouake“: 3000000,
“daloa“: 1500000
}
124
124
62
11/03/2021
COMPREHENSION DE SETS
§ Exemple d’utilisation
125
125
EXERCICE
126
63
11/03/2021
PARTIE 1
§ Fichier US_births_1994-2003_CDC_NCHS.csv
§ Ouvrir le fichier, afficher les 10 premières lignes
§ Retournant une liste de listes dont les valeurs sont de type INT
§ Utiliser la fonction ‘read_csv’ pour lire le fichier « Us_births… » et
affecter le résultat à la variables « naissances »
§ Afficher les 10 premières lignes et confirmer que les valeurs sont
bien de type INT, et qu’il n’y a pas de ligne d’entête.
127
127
PARTIE 2
128
128
64
11/03/2021
PARTIE 2
129
CONCEPT DE CLASSE
130
65
11/03/2021
CLASSE
131
CLASSE
132
66
11/03/2021
ACTIVITE
133
133
CLASSE
class Dataset:
def __init__(self, data):
self.data = data
new_dataset = Dataset(data)
print(new_dataset.data)
134
134
67
11/03/2021
ACTIVITE (SUITE)
135
135
CLASSE
class Dataset:
def __init__(self, data):
self.data = data
def print_data(self):
print(self.data[:5])
136
136
68
11/03/2021
ACTIVITE (SUITE)
137
ACTIVITE (SUITE)
138
138
69
11/03/2021
ACTIVITE (SUITE)
139
139
https://docs.python.org/3/reference/datamodel.html#basic-customization
140
140
70
11/03/2021
141
141
MODULE
142
71
11/03/2021
MODULE
§ Collection de code
§ Permet d’avoir un code propre et élégant en séparant des objets dans des
fichiers distincts et hiérarchisés
§ Ajout de nouvelles fonctionnalités écrites par d’autres personnes
§ Peut contenir n’importe quoi (Classes, Fonctions, Variables, Assets, etc.)
import module_name
§ Implique que nous avons du code dans le fichier module_name.py, et qu’il est
accessible par l’interpréteur Python
143
143
MODULE
import module_name
module_name.une_fonction()
144
144
72
11/03/2021
MODULE
dir()
import module_name as m
m.function1()
m.function2()
145
145
146
146
73
11/03/2021
§ Pollution du Namespace
§ Possibilité d’écraser des définitions de fonctions ou objets dans
d’autres modules Objets importés non préfixés
147
147
import module_name
print(module_name.objet)
148
148
74
11/03/2021
import csv
f = open(“my_data.csv“)
csvreader = csv.reader(f)
my_data = list(csvreader)
149
149
ACTIVITE
150
150
75
11/03/2021
CREATION DE MODULE
§ Commençons par créer un fichier hello.py avec le contenu suivant
def world():
print(‘Hello World’)
§ Ensuite, dans notre fichier principal program.py, situé dans le même dossier que notre fichier hello.py
151
151
def world():
print(‘Hello World’)
training = ‘Python’
§ Ensuite, dans notre fichier principal program.py, toujours situé dans le même dossier que notre fichier hello.py
# Import du module hello
import hello
# Appel de notre fonction
hello.world()
# Affichage de la variable
print(hello.training)
152
152
76
11/03/2021
training = ‘Python’
class Formation:
def __init__(self, title, duration):
self.title = title
def show_infos(self):
print(‘Formation {}: {} days’.format(self.title, self.duration))
§ Ensuite, dans notre fichier principal program.py, toujours situé dans le même dossier que notre fichier hello.py
# Import du module hello
import hello
# Appel de notre fonction
hello.world()
# Affichage de la variable
print(hello.training)
# Appel de classe
p = hello.Formation(‘Python’,5)
p.show_infos()
153
153
§ Ensuite, dans un nouveau fichier run_program.py, situé dans le même dossier que notre
fichier run_function.py
# Import du module run_function
import run_function
154
154
77
11/03/2021
155
155
import sys
sys.path.append(‘/chemin/vers/dossier/du/module/hello’)
import hello
156
156
78
11/03/2021
157
157
§ https://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/Importing%20Notebooks.html
158
158
79
11/03/2021
PACKAGE
159
PACKAGE
160
160
80
11/03/2021
PACKAGE
§ Dans certains cas, le module est constitué d’un seul fichier. Il est alors
possible d’omettre la section from
import csv
161
161
162
81
11/03/2021
CREATION DE PACKAGE
https://packaging.python.org/tutorials/packaging-projects/
163
163
MANIPULATION DE FICHIERS
164
164
82
11/03/2021
FICHIER TEXTE
165
165
TYPES DE FICHIERS
§ Binaire
166
166
83
11/03/2021
167
167
168
168
84
11/03/2021
§ Fonction open()
§ Mode:
§ ‘r’ : lecture
169
§ Fonction write()
§ Exemple de code:
file.write(‘Hello world’)
file.write(’Ceci est un exemple’)
file.close()
170
170
85
11/03/2021
§ Exemple de code:
171
171
SYNTAXE WITH
§ Bonne pratique
§ Exemple de code:
172
172
86
11/03/2021
FICHIER CSV
173
173
§ Module csv
§ Fonction csv.reader()
§ Exemple de code
import csv
with open(‘fichier.csv’, ‘r’) as csvfile:
csvreader = csv.reader(csvfile, delimiter=‘;’)
for i in csvreader:
print i
174
174
87
11/03/2021
§ Fonction csv.writer()
§ Exemple de code
import csv
with open(‘resultat.csv’, ‘r’) as csvfile:
csvwriter = csv.reader(csvfile, delimiter=‘;’)
for i in liste_de_listes:
csvwriter.writerow(i)
175
175
WHAT NEXT ?
§ DictWriter
§ Dialect
§ https://docs.python.org/3/library/csv.html
176
176
88
11/03/2021
FICHIER EXCEL
177
177
FICHIER EXCEL
§ Installation
§ Documentation
https://openpyxl.readthedocs.io/en/stable/
178
178
89
11/03/2021
179
179
180
180
90
11/03/2021
181
181
91