Python pour Excel
Felix Zumstein
First Interactive
Préface
xi
Pourquoi j'ai écrit ce livrexii
À qui s'adresse ce livrexiii
Organisation de ce livrexiii
Partie I : Introduction à Pythonxiii
Partie II : Introduction à pandasxiv
Partie III : Lecture et écriture de fichiers Excel sans Excelxiv
Partie IV : Programmation de l'application Excel avec xlwingsxiv
Versions de Python et d'Excelxv
Conventions utilisées dans ce livrexvi
Utilisation des exemples de codexvi
Remerciementsxvii
1. Pourquoi Python pour Excel ?1
Excel est un langage de programmation2
Excel dans l'actualité3
Bonnes pratiques de programmation4
Excel moderne9
Python pour Excel11
Lisibilité et maintenabilité11
Bibliothèque standard et gestionnaire de packages13
Informatique scientifique14
Caractéristiques des langages modernes15
Compatibilité multiplateforme16
Conclusion17
2. Environnement de développement19
Distribution Python Anaconda20
Installation20
Anaconda Prompt21
Python REPL : une session Python interactive24
Gestionnaires de packages : Conda et pip25
Environnements Conda27
Notebooks Jupyter28
Exécution de notebooks Jupyter29
Cellules de notebook30
Mode édition et mode commande32
Eordre d'exécution des cellules est important33
Arrêt des notebooks Jupyter34
Visual Studio Code35
Installation et configuration37
Exécution d'un script Python39
Conclusion44
3. Prise en main de Python45
Types de données45
Objets46
Types numériques47
Booléens50
Chaînes51
Indexation et découpage52
Indexation53
Découpage53
Structures de données54
Listes55
Dictionnaires57
Tuples58
Ensembles59
Structures de contrôle60
Blocs de code et instruction pass60
L'instruction if et les expressions conditionnelles61
Boucles for et while62
Compréhensions de listes, de dictionnaires et d'ensembles65
Organisation du code66
Fonctions66
Modules et instruction import68
Classe datetime70
PEP 8 : Guide de style du code Python72
PEP 8 et VS Code74
Indicateurs de type75
Conclusion75
4. Bases de NumPy79
Prise en main de NumPy79
Tableau NumPy79
Vectorisation et diffusion81
Fonctions universelles (ufunc)83
Création et manipulation de tableaux84
Lecture et définition d'éléments de tableau84
Constructeurs de tableau utiles85
Vue ou copie ?86
Conclusion86
5. Analyse de données avec pandas87
DataFrames et séries87
Index90
Colonnes92
Manipulation des données94
Sélection des données95
Sélection à l'aide d'un MultiIndex100
Modification des données101
Données manquantes104
Données en double106
Opérations arithmétiques107
Utilisation des colonnes de texte109
Application d'une fonction110
Vue ou copie ?112
Combinaison de DataFrames112
Concaténation113
Jointure et fusion114
Statistiques descriptives et agrégation des données117
Statistiques descriptives117
Regroupement118
Tableaux croisés dynamiques et fusion119
Réalisation de tracés121
Matplotlib121
Plotly123
Importation et exportation de DataFrames126
Exportation de fichiers CSV127
Importation de fichiers CSV128
Conclusion130
6. Analyse de séries chronologiques avec pandas131
DatetimeIndex132
Création d'un DatetimeIndex132
Filtrage d'un DatetimeIndex134
Utilisation des fuseaux horaires136
Manipulations courantes sur les séries chronologiques137
Décalages et variations en pourcentage137
Rebasement et corrélation140
Rééchantillonnage143
Fenêtres glissantes145
Limites de pandas146
Conclusion147
7. Manipulation de fichiers Excel avec pandas151
Étude de cas : génération d'un rapport Excel151
Lecture et écriture de fichiers Excel avec pandas155
Fonction read excel et classe ExcelFile155
Méthode to excel et classe ExcelWriter161
Limites lors de l'utilisation de pandas avec des fichiers Excel163
Conclusion163
8. Manipulation de fichiers Excel avec des packages de lecture et d'écriture165
Packages de lecture et d'écriture165
Savoir quel package utiliser166
Module excel.py167
OpenPyXL169
Xlsx Writer173
pyxlsb175
xlrd, xlwt et xlutils176
Fonctionnalités avancées pour la lecture et l'écriture de fichiers Excel179
Exploitation de fichiers Excel volumineux179
Mise en forme des DataFrames dans Excel183
Étude de cas (revisitée) : création d'un rapport Excel189
Conclusion190
9. Automatisation d'Excel193
Prise en main de xlwings194
Utilisation d'Excel pour visualiser des données194
Modèle objet d'Excel196
Exécution du code VBA202
Convertisseurs, options et collections203
Exploitation des DataFrames204
Convertisseurs et options205
Graphiques, images et noms définis207
Étude de cas (revisitée) : rapports Excel211
Approfondissement de xlwings212
Sur quoi repose xlwings ?213
Amélioration des performances215
Comment pallier les fonctionnalités manquantes216
Conclusion217
10. Outils Excel dopés par Python219
Utilisation d'Excel comme frontend avec xlwings219
Complément Excel220
Commande quickstart222
Run main222
Fonction RunPython223
Déploiement228
Dépendance Python228
Classeurs autonomes : comment se débarrasser du complément xlwings229
Hiérarchie de configuration230
Paramètres231
Conclusion233
11. Python Package Tracker235
Ce que nous allons construire235
Fonctionnalités de base238
API Web238
Bases242
Exceptions251
Structure de l'application253
Frontend254
Backend258
Débogage262
Conclusion263
12. Fonctions définies par l'utilisateur (UDF)265
Prise en main des UDF266
Commande quickstart pour les UDF266
Étude de cas : Google Trends271
Introduction à Google Trends271
Utilisation de DataFrames et de tableaux dynamiques273
Récupération de données à partir de Google Trends278
Traçage avec des UDF283
Débogage des UDF284
Sujets avancés sur les UDF286
Optimisation des performances de base287
Mise en cache289
Décorateur sub291
Conclusion292
Annexe A Environnements Conda295
Création d'un nouvel environnement Conda295
Annulation de l'activation automatique297
Annexe B Fonctionnalités avancées de VS Code299
Débogueur299
Notebooks Jupyter dans VS Code301
Exécution de notebooks Jupyter301
Scripts Python avec des cellules de code303
Annexe c Concepts Python avancés305
Classes et objets305
Exploitation d'objets datetime prenant en charge les fuseaux horaires307
Objets Python mutables ou immuables ?308
Appel de fonctions avec des objets mutables comme arguments309
Fonctions avec des objets mutables comme arguments par défaut311
Index313