Les prérequis de la Data Science : la programmation (5/5)

La programmation

La connaissance de divers algorithmes et concepts statistiques sophistiqués est une bonne chose, mais la capacité à les appliquer pour résoudre des problèmes pratiques est encore meilleure. À notre époque, vu la quantité de données disponibles et la complexité croissante des techniques utilisées, il est impératif d’exécuter les calculs sur un matériel conçu à cet effet. Mais pour communiquer notre intention à la machine, nous devons bien maitriser un langage de programmation.

Dans le domaine de la science des données, les praticiens semblent privilégier R et Python en particulier, principalement en raison de leur flexibilité, de leur facilité d’utilisation et des bibliothèques spécialisées ou des librairies qu’ils fournissent pour faire de l’analyse de données. Ceci est un point clé qui motive le choix, car ces deux langages offrent des implémentations prêtes à l’utilisation de diverses techniques et algorithmes qui peuvent être employés avec un simple appel de fonction et quelques lignes de code.
Cela aide essentiellement l’analyste à se concentrer davantage sur la résolution de la tâche à accomplir plutôt que sur la rédaction de plusieurs pages de code. Il existe un grand débat au sein de la communauté sur le choix du meilleur langage, et des arguments peuvent être avancés en faveur des deux options. D’un côté, R est un langage statistique et est généralement mieux adapté à l’analyse de données, à l’extraction d’information, à la visualisation, au prototypage interactif et à la communication.
En revanche, Python, en tant que langage de programmation à part entière, est le choix préféré pour écrire du code de production qui peut être intégré dans une base de code déjà existante. Bien qu’il n’intègre pas de fonctionnalités de data science, il offre plusieurs librairies spécialisées et bien conçues pour effectuer des travaux en science des données.
En fin de compte, la réponse au débat est « peu importe », le langage de programmation n’est qu’un moyen pour arriver à une fin, et non un objet en lui-même.
Cela dit, Python étant le standard de l’industrie sera le langage de choix pour les besoins du présent article. Il convient également de noter qu’à part les librairies, la plupart des autres concepts présentés ici forment une connaissance de base en programmation informatique et se généralisent tout aussi bien aux autres langages de programmation.

Qu’est-ce que le langage Python ?

ython est un langage de programmation interprété, de haut niveau et à usage général [Wikipédia]. Sa flexibilité lui permet d’être utilisé comme un outil de script pour des analyses interactives et du prototypage rapide, mais aussi comme un langage de programmation à part entière pour développer des programmes destinés à d’autres domaines tels que le développement réseau, le développement web, les jeux vidéo etc. Avant de se plonger dans les librairies spécialisées en sciences des données que Python propose, il est crucial de prendre le temps de comprendre d’abord la distribution standard de Python, ainsi que les principes généraux de programmation, ce qui rendra ensuite le processus de prise en main de nouvelles librairies beaucoup plus facile.

Des connaissances de niveau débutant à intermédiaire en programmation sont souhaitées pour être opérationnel en science des données.

Concepts de programmation

1. Types de Données : Integers, Floats, Strings, Booleans … 

2. Structures de Données : Lists, Tuples, Sets, Dictionaries, leurs similarités, leurs différences, leurs cas d’usage et surtout comment les manipuler.

3. Instructions de Contrôle : If Else, boucles For, boules While, les instructions Break/Pass/Continue … 

4. Fonctions : définition de fonction, arguments, arguments par mot-clé, expressions lambda … 

5. Entrées / Sorties (I/O) : Lecture/écriture depuis/vers des fichiers et les chaînes de caractères formatés. 

6. Erreurs et Exceptions : Comment détecter des erreurs et gérer les exceptions.

7. Les Classes (Programmation Orientée Objet) : Comment définir et manipuler les classes en python. Ceci est très important car la plupart des librairies de Python sont organisées sous forme de classes. Dans le package sklearn par exemple, LinearRegression est une classe, et LinearRegression() fait appel au constructeur de cette classe pour créer une instance, avec des méthodes implémentant des fonctionnalités et des attributs destinés au stockage des données. 

8. Autres Modules : Il s’agit de modules complémentaires inclus dans la distribution standard de Python et qui peuvent être utiles pour accomplir certaines tâches. Ils comprennent, entre autres, le module math (pour les fonctions mathématiques), le module datetime (pour la manipulation des dates et du temps), le module re (pour les expressions régulières), le module collections (qui offre de nouveaux conteneurs et structures de données mieux adaptés à certains cas d’usage) …

Pour aller plus loin en programmation

Afin de monter en compétences, ou tout simplement se lancer dans la programmation, nous vous proposons quelques ressources, classées par type de source.

Playlists YouTube

Chaîne: Corey Schafer

Playlist: Python Tutorials

Description : Cette chaîne est axée sur la création de tutoriels et de guides pour les développeurs et les ingénieurs et couvre une variété de sujets pour différents niveaux de compétence tels que Git, Python, les commandes de terminal, SQL, JavaScript, etc. La playlist “Python Tutorials” est une collection très complète de 143 vidéos de 10 à 45 minutes chacune. Elle couvre les principes et concepts généraux de la programmation en python, y compris quelques librairies spécialisées, dont certains sont essentiels à la science des données (pandas et matplotlib). Corey a un style d’enseignement exceptionnel et une capacité à transmettre des informations complexes de manière digeste en utilisant une communication claire et beaucoup d’exemples illustratifs. Que vous soyez un débutant ou un programmeur avancé, cette chaîne a probablement quelque chose de nouveau à vous apprendre.

Livres

Auteur : Allen Downey

Titre : Think Python

Description :  Nous avons mentionné les livres d’Allen Downey à plusieurs reprises dans cette série, il va donc sans dire que je pense que ses livres sont d’une grande qualité. Think Python n’est pas une exception, il s’agit d’un livre de 250 pages qui présente au lecteur les bases de l’informatique et plus particulièrement le langage de programmation Python, y compris la plupart des concepts détaillés précédemment. Cependant, je ne recommande pas de faire les exercices du livre car je pense personnellement que leur coût en temps est trop élevé par apport à leur valeur ajoutée. Ceci dit, il existe de nombreuses plateformes de codage où l’on peut s’entraîner sur python. Le livre est disponible gratuitement en ligne.

Auteur : Official Python Documentation

Titre : Python 3 Tutorial

Description : Ce n’est pas exactement un livre, mais un tutoriel complet proposé dans le cadre de la documentation officielle du langage Python. C’est probablement la meilleure ressource pour couvrir tous les sujets mentionnés ci-dessus et plus si nécessaire. N’hésitez pas à choisir soit ce tutoriel, soit Think Python, car ils contiennent des informations similaires et sont organisés de la même façon aussi. Cela dit, le style d’enseignement n’est pas le même, alors choisissez celui qui vous convient le mieux.

Plateformes de programmation

Platforme : Hackerrank

Nom : Python Practice Challenges

Description : Les livres et tutoriels sur la programmation constituent une bonne première étape dans l’apprentissage, mais surtout, il faut pratiquer. Pendant la lecture d’un livre ou d’un tutoriel, ouvrez votre terminal ou un IDE sur le côté et entraînez-vous en parallèle. Hackerrank est une plate-forme qui propose justement de nombreux exercices organisés en sections, que vous pouvez résoudre en Python depuis le confort de votre navigateur internet. Cette plateforme est un endroit idéal pour s’entraîner, et elle a le grand avantage d’avoir une interface beginner-friendly. Nombreux sont les professionnels qui recommandent vivement ce site.