Python pour le Data scientist
Des bases du langage au machine learning
2e édition
Emmanuel Jakobowicz
Dunod
Avant-propos
XI
Première partie
Les fondamentaux du langage Python
1 Python, ses origines et son environnement
17
1.1 Histoire, origines et évolution : de la naissance à la version 3.917
1.1.1 Les origines et l'évolution du langage18
1.1.2 La rencontre entre Python et la data science18
1.1.3 Lévolution actuelle19
1.1.4 Le futur de Python19
1.2 Python vs R vs le reste du monde20
1.2.1 R20
1.2.2 Outils de traitement de flux23
1.2.3 SAS24
1.2.4 Les autres langages24
1.3 Comment développer en Python ?25
1.4 Les outils pour coder en Python27
1.4.1 Python et PyPi27
1.4.2 Anaconda28
1.4.3 IPython31
1.4.4 Spyder, Visual Studio Code et PyCharm33
1.4.5 Jupyter notebooks34
1.4.6 JupyterLab : l'évolution des notebooks40
1.5 Les packages pour la data science42
1.5.1 Les packages pour la gestion des données et le calcul numérique42
1.5.2 Les packages pour la visualisation des données43
1.5.3 Les packages pour le machine learning et le deep learning43
1.5.4 Les packages pour le big data44
1.5.5 Autres packages pour la data science44
2 Python from scratch
45
2.1 Principes de base45
2.1.1 Un langage interprété, de haut niveau et orienté objet45
2.1.2 Python 2 ou Python 346
2.2 Les interpréteurs : Python et IPython47
2.2.1 Linterpréteur Python - une calculatrice évoluée47
2.2.2 Linterpréteur IPython - une ouverture vers plus de possibilités48
2.3 La base pour commencer à coder52
2.3.1 Les principes52
2.3.2 Un langage tout objet53
2.3.3 Les commentaires54
2.3.4 Les conventions do nommage54
2.3.5 Los règles de codage55
2.3.6 Les opérateurs logiques55
2.4 Les structures (tuples, listes, dictionnaires)56
2.4.1 Les tuples56
2.4.2 Les listes57
2.4.3 Les chaînes de caractères - des listes de caractères59
2.4.4 Les dictionnaires60
2.5 La programmation (conditions, boucles..)61
2.5.1 Les conditions61
2.5.2 Les boucles63
2.6 Les fonctions65
2.6.1 Généralités65
2.6.2 Les arguments d'une fonction66
2.6.3 Les docstrings68
2.6.4 Les retours multiples69
2.6.5 Les fonctions lambda69
2.7 Les classes et les objets70
2.7.1 Qu'est-ce qu'une classe ?70
2.7.2 Comment définir une classe ?70
2.7.3 Aller plus loin sur les classes72
2.8 Les packages et les modules72
2.8.1 Un peu de vocabulaire72
2.8.2 Installer un package72
2.8.3 Charger un package ou un module dans votre code72
2.8.4 Créer son propre module/package73
2.9 Aller plus loin74
2.9.1 La gestion des exceptions74
2.9.2 Les expressions régulières76
2.9.3 Les décorateurs77
Deuxième Partie
La préparation et la visualisation des données avec Python
3 Python et les données (NumPy et Pandas)
81
3.1 La donnée à l'ère de la data science81
3.1.1 Le type de données82
3.1.2 Le travail de préparation des données83
3.2 Les arrays de NumPy83
3.2.1 Le ndarray de NumPy83
3.2.2 Construire un array84
3.2.3 Les types de données dans des arrays85
3.2.4 Les propriétés d'un array85
3.2.5 Accéder aux éléments d'un array86
3.2.6 La manipulation des arrays avec NumPy87
3.2.7 Copies et vues d'arrays93
3.2.8 Quelques opérations d'algèbre linéaire94
3.2.9 Les arrays structurés95
3.2.10 Exporter et importer des arrays96
3.3 Les objets sériés et dataframe de Pandas97
3.3.1 Les objets Sériés de Pandas97
3.3.2 Les objets DataFrame de Pandas 100
3.3.3 Copie et vue des objets de Pandas 104
4 La préparation des données et les premières statistiques
107
4.1 Présentation des données107
4.1.1 Les locations AirBnB à Paris107
4.1.2 Les données des employés de la ville de Boston108
4.1.3 Les données des communes d'île-de-France109
4.1.4 Les données sur les clients d'un opérateur de télécommunications109
4.1.5 Les SMS pour la classification de messages indésirables110
4.1.6 La base de données des vêtements Fashion-MNIST111
4.1.7 Les données de l'indice CAC40 depuis 1987111
4.2 Les outils pour charger les données112
4.2.1 Importer des données structurées112
4.2.2 Le traitement des données externes (csv, SQL, xlsx, open data...)112
4.2.3 Charger et transformer des données non structurées (images, sons, json, xml...)121
4.3 Décrire et transformer des colonnes126
4.3.1 Décrire la structure de vos données126
4.3.2 Quelles transformations pour les colonnes de vos données ?128
4.3.3 Les changements de types129
4.3.4 Les jointures et concaténations131
4.3.5 La gestion des duplications de lignes133
4.3.6 La discrétisation134
4.3.7 Les tris137
4.3.8 Le traitement de données temporelles138
4.3.9 Le traitement des données manquantes142
4.3.10 Le traitement des colonnes avec des données qualitatives145
4.3.11 Les transformations numériques149
4.3.12 Échantillonnage des données150
4.3.13 La construction de tableaux croisés151
4.4 Extraire des statistiques descriptives152
4.4.1 Statistiques pour données quantitatives153
4.4.2 Statistiques pour données qualitatives155
4.5 Utilisation du groupby pour décrire des données156
4.5.1 Le principe156
4.5.2 Les opérations sur les objets groupby156
4.5.3 Apply : une méthode importante pour manipuler vos groupby158
4.5.4 Cas concret d'utilisation d'un groupby158
4.6 Aller plus loin : accélération160
4.6.1 Parallélisation avec Dask et Pandas160
4.6.2 Accélération du code avec Numba161
5 Data visualisation avec Python
165
5.1 Construction de graphiques avec Matplotlib165
5.1.1 Utilisation de Matplotlib165
5.1.2 Afficher des graphiques166
5.1.3 Les paramètres globaux de Matplotlib et l'exportation de graphiques167
5.1.4 Votre premier graphique169
5.1.5 Nuage de points avec plt.scatter172
5.1.6 Le graphique en bâtons avec plt.barO174
5.1.7 La construction d'un pie chart175
5.1.8 Les barres d'erreurs avec plt.errorbarf)176
5.1.9 La construction d'histogrammes177
5.1.10 Personnaliser vos graphiques Matplotlib178
5.1.11 Créer un graphique animé184
5.2 Seaborn pour des représentations plus élaborées185
5.2.1 Utilisation de Seaborn185
5.2.2 Le box plot ou la boîte à moustaches185
5.2.3 Les violons187
5.2.4 Les distplotü de Seaborn189
5.2.5 Les pairplot() de Seaborn ou la matrice de graphiques189
5.2.6 Les jointplot()190
5.3 Quelques bases de cartographie191
5.3.1 Installation et utilisation de Cartopy192
5.3.2 Les autres outils195
5.4 Les graphiques interactifs avec d'autres packages et outils197
5.4.1 Les packages utilisés197
5.4.2 Création d'une visualisation avec Bokeh197
5.4.3 Création d'une application web avec Bokeh199
Troisième Partie
Python, le machine learning et le big data
6 Différentes utilisations du machine learning avec Python
205
6.1 Le machine learning, qu'est-ce que c'est ?205
6.1.1 Les principes et les familles d'algorithmes205
6.1.2 Faire du machine learning207
6.2 Comment faire du machine learning avec Python208
6.2.1 Scikit-Learn208
6.2.2 TensorFlow210
6.2.3 Keras210
6.2.4 PyTorch211
6.3 Le processus de traitement en machine learning211
6.3.1 Le rôle du data scientist pour les traitements machine learning211
6.3.2 Avant les algorithmes : les données211
6.3.3 Quelques règles à respecter lorsqu'on utilise des algorithmes212
6.3.4 Le traitement avec Scikit-Learn214
6.4 Lapprentissage supervisé avec Scikit-Learn216
6.4.1 Les données et leur transformation217
6.4.2 Le choix et l'ajustement de l'algorithme224
6.4.3 Les indicateurs pour valider un modèle230
6.4.4 L'ajustement des hyperparamètres d'un modèle237
6.4.5 La construction d'un pipeline de traitement240
6.4.6 Passer en production votre modèle d'apprentissage supervisé243
6.5 L'apprentissage non supervisé245
6.5.1 Le principe245
6.5.2 Implémentation d'une méthode de clustering avec Python245
6.5.3 Les méthodes de réduction de dimension251
6.6 L'analyse textuelle avec Python257
6.6.1 Les données textuelles en Python257
6.6.2 Le prétraitement des données258
6.6.3 La mise en place d'un premier modèle prédictif261
6.6.4 Aller plus loin264
6.7 Le deep learning265
6.7.1 Pourquoi le deep learning ?265
6.7.2 Installer votre environnement265
6.7.3 Principe d'un réseau de neurones et première utilisation266
6.7.4 Le deep learning et les réseaux de neurones à convolutions270
6.7.5 Aller plus loin : génération de features, transfer learning, RNN, GAN274
7 Python et le big data : tour d'horizon
279
7.1 Est-ce qu'on change tout quand on parle de big data ?279
7.2 Comment traiter de la donnée massive avec Python280
7.3 Récupérer des données avec Python281
7.3.1 Les approches classiques281
7.3.2 Se connecter aux fichiers HDFS en Python- Utilisation de PyArrow282
7.3.3 Faire du Hive avec Python - Utilisation de PyHive283
7.4 Utilisation d'Apache Spark avec PySpark en Python284
7.4.1 Principes de Spark284
7.4.2 Installer une infrastructure Spark286
7.4.3 Le DataFrame de Spark SQL287
7.4.4 Le machine learning avec Spark293
Lexique de la data science
297
Mettre en place votre environnement
301
Bibliographie
305
Index
309