R, Julia, WinPython, Anaconda, pyminstall, getting started
Lorsqu'on fait des statistiques, le language Python
est loin d'être aussi complet que R qui a été pensé dans ce but. Il faut lui ajouter plusieurs dizaines de modules. C'est à ce moment qu'on découvrir les subtilités dans les différents systèmes d'exploitations, les compilateurs, les dépendances, la ligne de commande. Ce paragraphe décrit un moyen d'installation Python
sur les trois systèmes principaux Windows, OS X, Linux avec les modules nécessaires présentés dans ce cours. Le premier paragraphe explique comment installer rapidement Python
, il faudra lire les suivants si vos besoins vont au delà.
La grande majorité des exemples et des notebooks proposés sur ce site sont testés une fois par mois. La distribution utilisée varie mais s'appuie sur les dernières versions des modules. Une part moins importante est également testée à chaque modification sur github/sdpython
sur Windows, Linux (Ubuntu) et Linux (Debian).
Les tests sont dorénavant effectués sur Linux Debian 10 et la distribution standard Python 3.9.1. Les traces d'installation ont été conservées dans cet article 2021-01-09 Install Python 3.9 and many packages on Linux Debian 10.
Pour l'année 2017, les tests sont dorénavant effectués sur Linux Debian 9 et la distribution standard Python 3.7.0. L'installation de cette machine est assez fastidieuse. Les traces de l'installation sont conservées sur cet article de blog : Install Python 3.7 and many packages on Linux Debian 9. Il reste quelques problèmes comme TensorFlow
qui n'est pas encore compatible avec Python 3.7 (août 2018) mais cette pull request devrait résoudre le problème.
Toutes les modules étaient testées sur Windows 10 et une distribtion standard Python 3.6.4 puis Python 3.6.5 64 bits.
En résumé, le conseil le plus fréquent qu'on donne à ceux qui souhaitent installer Python
est d'utiliser la distribution Anaconda
. C'est l'équivalent de R
. Sans autre étape supplémentaire, elle permet de faire du calcul matriciel numpy
, de tracer des graphiques avec matplotlib
, de manipuler les données pandas et de faire du machine du machine learning scikit-learn
. La plupart des exercices proposés sur ce site n'utilisent pas plus que ce qui est proposé dans cette distribution standard. Pour les autres, les instructions mentionnées ci-dessous fonctionnent sous Windows, Linux et Mac.
- Installation
Anaconda
(python 64 bit) - Mise à jour de la distribution avec
conda update --all
(en ligne de commande).
Pour installer le module implémenté pour ce cours :
pip install ensae_teaching_cs
Certains modules nécessitent une compilation C++. Anaconda
fournit la plupart d'entre eux. Et Les plus utilisés sont de plus en plus disponibles sur pypi. Pour les autres, il faut allez à Unofficial Windows Binaries for Python Extension Packages. Certains modules n'existent pas sous forme précompilée à moins de le faire soi-même. Il faut qu'un compilateur soit installée sur la machine et sans doute d'autres dépendances. Il est possible aussi de suivre les instructions exécutées à chaque changement : appveyor.yml.
La page Anaconda Documentation Installation est assez précise quant à la démarche à suivre pour installer Anaconda ou Miniconda. Vous pouvez aussi suivre les instructions utilisées à chaque changement config.yml.
Il existe des différences sur MacOs. Mais vous pouvez suivre les instructions contenus dans ce fichier azure-pipelines.yml.
Un IDE est un environnement de développement. Et comme on ne fait pas tout depuis un notebook, il faut en choisir un un.
- Visual Studio Code
- Atom
- Ninja IDE
- PTVS (Python Tools for Visual Studop)
- PyCharm
- PyDev (fonctionne avec Eclipse)
- Pyzo : ressemble à Matlab (anciennement IEP)
- WingIDE
Si vous êtes dans le train et que vous n'avez pas beaucoup de batterie, il faut revenir à l'essentiel : un éditeur de texte.
- Emacs
- nano (linux)
Notepad++
SciTE
, le plus simple et le plus léger, lire cet article pour le configurer Installer Python pour faire des statistiques.
Le language python
s'est doté d'un système de distribution de modules (ou packages) qui est aisément accessible depuis la ligne de commande. Sous Windows
, on peut lancer la ligne de commande par la commande cmd
. Sous Linux
ou OS/X
, c'est une fenêtre terminal (Linux
, OS/X
). Il suffit alors de se déplacer dans le répertoire d'installation de Python
:
cd c:\Python391_x64\Scripts
Ou encore :
cd c:\Anaconda3\Scripts
Puis d'écrire :
pip install <module>
Sous Linux
ou OS/X
(Apple), la ligne de commande s'appelle le terminal. Comme Python
est déjà installé en version 2.7, je recommande l'installation de la distribution Anaconda
en version 3.8 qui facilite la coexistence de plusieurs versions de Python
. On procède de la même manière :
cd /home/<alias>/anaconda3/bin
Puis :
pip install <module>
Pour vous assurer que cela correspond bien à la version de Python
souhaitée, il suffit de demander la version installée :
pip --version
Sous Windows
, pour l'ajout d'un module ponctuel, si l'instruction pip install <module>
ne fonctionne pas, c'est vraisemblablement parce que ce module contient une partie en C++. Dans ce cas, il faut aller voir sur ce site Unofficial Windows Binaries for Python Extension Packages s'il est disponible. S'il ne l'est pas, l'installation du module est réservée aux experts.
Anaconda
maintient des versions de librairies Python
. Pour tous les modules de cette liste, Anaconda Package List, il faut utiliser conda install <module>
. Pour les autres, pip install <module>
. Cela ne fonctionne qu'avec la distribution Anaconda
.
L'instruction pip install
ne fonctionne pas sous Windows
lorsque le module est implémenté en Python
et C++
. C'est pourquoi il est préférable d'installer une version précompilée.
Par défaut, l'installation d'un module implique celle de ses dépendances ce qu'il est possible d'éviter :
pip install <module> --no-deps
Il est possible de désinstaller simplement les modules installés pour ces enseignements :
from ensae_teaching_cs.automation.teaching_modules import get_teaching_modules for mod in sorted(get_teaching_modules()): print('pip uninstall -y {}'.format(mod))
Certains notebooks requièrent des outils supplémentaires :
GraphViz
pip, ligne de commande
anaconda, winpython, miniconda
Anaconda
(Windows, Linux, Mac). SousLinux
ouOS/X
, la distribution n'interfère pas avec la distribution existante souvent différente. C'est un point très appréciable. Les modules de la distribution ne sont pas tous à jour. Il faut penser à mettre à jour avec la commandeconda install <module>
depuis le répertoireAnaconda3/Scripts
(conda install cvxopt
par exemple). Il existe une version différente :miniconda
. La liste des packages manquant sera probablement différente. Il suffit d'écrire sur la ligne de commandeconda update --all
pour mettre à jour tous les modules.- WinPython (
Windows
). SousWindows
, elle inclut parfoisR
ouJulia
(ces version ne sont pas aussi à jour que la version principale). On passe alors facilement de python àR
ouJulia
depuis le même notebooks. Uniquement disponible sousWindows
, cette installation a l'avantage de ne pas nécessiter les droits administrateur pour être installée. Elle ne modifie pas les registres et on peut la recopier telle quelle sur une clé USB pour la recopier sur un autre ordinateur. On peut également préparer sa propre version How To Make WinPython. - Distribution officielle de
Python
, il faut ensuite installer de nombreux modules (voirl-data2amod
) pour obtenir une distribution équivalente aux deux précédentes. miniconda
est une version light deAnaconda
sans tous ces packages. Elle peut être installée depuis une ligne de commande, via une connexion SSH. Voir Install Anaconda through SSH connection.
La liste des packages de WinPython ou Anaconda sont d'excellents moyens de découvrir de nouveaux modules intéressants.
Les modules indispensables sont intégrés à la distribution Anaconda, WinPython.
Les indispensables
dask
: dataframe distribué et capables de gérer des gros volumes de données (> 5Go)Jupyter
: gestion des notebooks (des pages blanches mélangeant code, équations, graphiques)matplotlib
: graphes scientifiquesnumpy
: calcul matricielpandas
: gestion de DataFrameScipy
: calcul scientifiquescikit-learn
: machine learning, statistique descriptivestatsmodels
: séries temporelles
Visualisation
Voir 10 plotting libraries at PyData 06/14/2016 in Paris ou l-visualisation
.
Jeux
pygame
+thorpy
- kivy : pour faire des jeux ou des applications pour tablettes, téléphones
Pour les TD et projets à l'ENSAE
pyensae
: outils pour les élèves de l'ENSAEpyquickhelper
: outils d'automatisation
Pour faire du machine learning sans programmer
Développer un programme informatique prend du temps et il est important d'être à l'aise. Une grande difficulté lorsqu'on programme c'est de travailler à plusieurs sur le même projet. Il faut se sychroniser. Fort heureusement, le problème est connu depuis longtemps et il existe beaucoup d'outils open source dont on aurait tort de se passer ou des services gratuits sous certains conditions qui facilitent l'archivage.
Suivi de sources distant
Git
git est un logiciel de suivi de source. Il a supplanté tous les autres et il est indispensable aujourd'hui de le connaître. On ne retient pas toujours les commandes mais un moteur de recherche fournit rapidement la réponse. Voir aussi Cheat Sheet.
- Git + GitHub : pour suivre ses projets avec Git
- TortoiseGit (Windows)
Archivage distant
- hubiC (25 Go gratuit)
- OneDrive
- Google Drive
- DropBox
- ...
Ce ne sont pas les seuls, vous trouverez d'autres options ici : cloud-gratuit. Toutefois, il est recommandé de faire attention avec les données personnelles sensibles. Il n'est pas toujours possible de choisir le lieu de stockage et chaque pays a une législation différente. Même si vos données sont protégées par un mot de passe et ne sont pas publiques, il arrive que certains mots de passe soient interceptés.
Comparaison de fichiers
- kdiff3
- Beyond and Compare : il est gratuit pendant un mois, c'est le plus convivial.
Partager des notes, des idées
Editeur de texte
- Visual Studio Code : il marche partout, il est gratuit, léger et il a été adopté pas beaucoup de monde
SciTE
: le plus simple, pas d'explorateur de fichier, pas d'installeur, autocomplétion perturbante- TextWrangler (seulement sur iOS - Apple)
- SublimeText : configuration nécessaire avant d'exécuter un script python
Notepad++
: configuration nécessaire avant d'exécuter un script python
IDE
- Visual Studio Code : il marche partout, il est gratuit, léger et il a été adopté pas beaucoup de monde
- Atom
- Ninja IDE
- PyCharm
- PyDev (fonctionne avec Eclipse)
- PTVS (fonctionne avec Visual Studio)
- Pyzo : ressemble à Matlab (anciennement IEP)
- WingIDE
Python et Domotique
Navigateur
navigateur, notebook
Les navigateur sont importants pour l'utilisation des notebooks. Je recommande soit Firefox, soit Chrome. Ces deux navigateurs sont indispensables si vous insérez du javascript dans nos notebooks. Le débuggeur de Chrome est le plus pratique à utiliser quand il s'agit d'aller fouiller dans les feuilles de styles ou de voir l'exécution du javascript.
développeur
Documentation
La documentation et les tests unitaires les modules classés dans les catégories SPHINX, TEACH (voir table ci-dessous). Certaines séances pratiques utilisent des données depuis ce site. Elles sont facilement téléchargeables avec ces deux modules :
pyquickhelper
: ce module compile ce courspyensae
: outils variés pour les élèves de l'ENSAE
Pour être compilée, la documentation requiert également :
GraphViz
: représenter des graphesInkScape
MiKTeX
(Windows seulement)pandoc
Continuous build
- Buildbot
- Java : nécessaire pour Jenkins et Antlr
Jenkins
(plus les plugins pour GitHub, git, python, pipeline, Build timeout plugin, Console column plugin, Next executions, Collapsing Console Sections Plugin, Exclusive Execution)Visual Studio Community Edition 2015
: C++, C#, F#, Python avec PTVS
Compression
- 7zip : pour compresser, décompresser tous les formats
Ressources
- Developpez.com : beaucoup de choses autour de la programmation et en français
- stackoverflow : énorme forum de discussion sur tout ce qui touche à la programmation
- Jardin Zen Css (la même page avec une multitude de styles différents)
- Le blog univers domotique
- Tutoriel sur GIT
Lire List of tools needed to build the documentation.
Manipuler les données est différent de savoir programmer. Si le second est nécessaire au premier, il est impensable aujourd'hui de ne pas tenir compte ce que d'autres programmeurs ont mis à disposition de tous en libre accès. Tous les modules proposés dans la suite sont utilisées par beaucoup, et sont très adaptés à la manipulation des données. Ils bénéficient de ce fait d'un développement rapide et d'une robustesse qu'il faut environ un an à un bon programmeur pour obtenir avec un de ses outils sur le même éventail de fonctionnalités (en y consacrant 10 à 20% de son temps).
J'ai cherché à regrouper les outils qui permettent à un ingénieur, statisticiens, data scientist de manipuler aisément des données, qui peuvent aller de quelques kilo-octets à quelques giga octets. En tant que data scientist, je pioche très régulièrement des éléments des sept premiers chapitres. Les sept suivants ne sont utiles que de temps en temps, surtout si les données sont de taille supérieure à 250 Mo.
L'essentiel n'est pas de tout faire en Python
, l'essentiel est d'être agile, de passer le moins de temps sur l'implémentation et le plus de temps possible sur les données.
Personnellement, j'ai acheté des livres de Python, le premier pour apprendre le langage, il m'a servi pour préparer mes premiers cours il y a 5 ou 6 ans, les autres pour voir ce qu'on pouvait écrire sur le sujet mais ils ne m'ont jamais vraiment servi. Le machine learning va si vite aujourd'hui que la plupart des livres d'informatique sont obsolètes en peu de temps. Pour apprendre, un livre ou un prof fera l'affaire. Ensuite, des livres de mathématiques, des articles...
Listes de modules
- data-science-ipython-notebooks
- Awesome Python, répertoire de librairies
Python
populaires (donc à regarder en premier) - Trending Python
- Trending Python (mensuel)
- Unofficial Windows Binaries for Python Extension Packages
- conférence pydata
Quelques articles
- scikit lectures
- Formation à Python scientifique - ENS Paris
- Quelques astuces pour faire du machine learning
- Python Tools for Machine Learning
- Python extensions to do machine learning
- 22 outils gratuits pour visualiser et analyser les données (1ère partie)
- Gradient Boosted Regression Trees
- A Reliable Effective Terascale Linear Learning System
- Understanding Random Forest
- 6 Best Python Books for Data Science and Machine Learning in 2021
- 20 Best Machine Learning Books for Beginner & Experts in 2021
Liens, blogs à suivre
Articles Livres, Vidéos
- Scikit-learn: Machine Learning in Python (avec les auteurs de scikit-learn)
- Building Machine Learning Systems with Python by Willi Richert, Luis Pedro Coelho published by PACKT PUBLISHING (2013)
- Machine Learning in Action by Peter Harrington
- Probabilistic Programming and Bayesian Methods for Hackers, (second version)
- PyVideo
- PyData TV
- dotconference.com
wheel
Les modules suivant font partie du setup proposé aux étudiants (voir plus bas).
- usage : classification, la plus importante DATA/ML regroupe les modules les plus importantes pour faire du machine learning
- name : nom du module
- kind : façon d'installer le module sous Windows, si c'est wheel, cela signifie que le module inclut une partie C++ qu'il est préférable de récupérer déjà compilée via le site Unofficial Windows Binaries for Python Extension Packages.
- version : la version à installer car d'autres peuvent provoquer des conflits
- license : license du module, toutes ne permettent pas un usage commercial, voir choose a license, licences commentées
- purpose : description plus détaillée
from ensae_teaching_cs.automation import rst_table_modules print(rst_table_modules())
Footnotes
pymyinstall, distribution