Skip to content
This repository has been archived by the owner on Jan 13, 2024. It is now read-only.

Latest commit

 

History

History
603 lines (457 loc) · 25.2 KB

i_getting_started.rst

File metadata and controls

603 lines (457 loc) · 25.2 KB

Getting started

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à.

Notes

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).

2020-2021

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.

2018-2020

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.

2017-2018

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é : Anaconda

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

Windows

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.

Linux en ligne de commande / MacOS

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.

IDE

Un IDE est un environnement de développement. Et comme on ne fait pas tout depuis un notebook, il faut en choisir un un.

Editeur de texte

Si vous êtes dans le train et que vous n'avez pas beaucoup de batterie, il faut revenir à l'essentiel : un éditeur de texte.

Installer un module

pip, python et ligne de commande

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.

conda ou pip

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.

Dépendances

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

Désinstallation des modules implémentés pour ce cours

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))

Configuration pour ces cours

Certains notebooks requièrent des outils supplémentaires :

  • GraphViz

pip, ligne de commande

Compiler un module

Distributions

anaconda, winpython, miniconda

  • Anaconda (Windows, Linux, Mac). Sous Linux ou OS/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 commande conda install <module> depuis le répertoire Anaconda3/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 commande conda update --all pour mettre à jour tous les modules.
  • WinPython (Windows). Sous Windows, elle inclut parfois R ou Julia (ces version ne sont pas aussi à jour que la version principale). On passe alors facilement de python à R ou Julia depuis le même notebooks. Uniquement disponible sous Windows, 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 (voir l-data2amod) pour obtenir une distribution équivalente aux deux précédentes.
  • miniconda est une version light de Anaconda 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.

Modules incournables pour un data scientist

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 scientifiques
  • numpy : calcul matriciel
  • pandas : gestion de DataFrame
  • Scipy : calcul scientifique
  • scikit-learn : machine learning, statistique descriptive
  • statsmodels : 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'ENSAE
  • pyquickhelper : outils d'automatisation

Pour faire du machine learning sans programmer

Outils, ressources pour développer

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.

En vrac

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.

Archivage distant

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

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

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 cours
  • pyensae : outils variés pour les élèves de l'ENSAE

Pour être compilée, la documentation requiert également :

  • GraphViz : représenter des graphes
  • InkScape
  • MiKTeX (Windows seulement)
  • pandoc

Continuous build

Compression

  • 7zip : pour compresser, décompresser tous les formats

Ressources

Générer une documentation comme ce cours

Lire List of tools needed to build the documentation.

Maintenir sa distribution Python à jour

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

Quelques articles

Liens, blogs à suivre

Articles Livres, Vidéos

Liste exhaustive de modules Python

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