IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Sondage : entre R et Python, lequel des deux langages est le plus conseillé
Pour la science des données ?

Le , par Bill Fassinou

557PARTAGES

8  0 
R ou Python pour la science des données ?
Python
60 %
R
28 %
Pas d'avis
12 %
Voter 25 votants
Dans la plupart des domaines de l’informatique, que ce soit celui du Big Data, l’apprentissage automatique ou encore l’intelligence artificielle (IA), il existe diverses préférences ou recommandations quant aux outils (technologies et langages de programmation) à utiliser pour rendre le travail plus ou moins facile. Dans le domaine de la science des données, on retrouve les langages de programmation Python et R qui sont utilisés pour l’analyse de données. Alors entre ces deux langages, lequel est le meilleur pour l’analyse de données ? Norm Matloff nous propose son avis sur la question.

La science des données (en anglais data science) est une discipline qui s'appuie sur des outils mathématiques, de statistiques, d'informatique et de visualisation des données. Son développement s’est accentué au cours de ces 20 dernières années notamment avec l’essor du Big Data et l’apprentissage automatique, les entreprises produisant de plus en plus de données. Elle est en plein développement dans le secteur privé et le secteur public ainsi que dans le monde universitaire.

Dans l’analyse de données, les experts en mégadonnées reconnaissent l’utilité et les potentiels qu’offrent les langages de programmation Python et R. Ce sont des langages de programmation open source avec une grande communauté. De nouveaux outils sont ajoutés en permanence à leur catalogue respectif. Le langage R est principalement utilisé pour l’analyse statistique, tandis que Python fournit une approche plus générale. De plus, les experts en mégadonnées utilisent R et Python pour le fait qu'il s'agisse de langages interprétés, ce qui est beaucoup plus adapté que les langages compilés pour faire de l’analyse de données.

Expliqué autrement, un langage interprété va permettre de visualiser directement le résultat de chaque étape de l’analyse. Les analyses nécessitent beaucoup d’allers-retours et de modifications des instructions, ce qui rend un langage interprété définitivement plus adapté. Un autre aspect de la chose est que les langages R et Python ont un ensemble d’instructions (de fonctions) déjà toutes faites et bien adaptées à l’analyse de données, d’où leur popularité en science des données. Même si l’utilisation de R et de Python mène le plus souvent au même résultat, la question de savoir lequel d’entre eux est le plus adapté à la science des données n’est pas exclue et il existe plusieurs comparaisons et avis sur le sujet.


Norm Matloff, professeur d'informatique et de statistique à l'université de Californie, a réalisé une petite comparaison des deux langages et a une attirance plus élevée pour R que pour le langage Python. Dans sa comparaison, il s’est penché sur des aspects tels que l’élégance des langages, la courbe d’apprentissage, les bibliothèques disponibles pour les deux langages, l’exactitude statistique, le calcul parallèle, l’interfaçage avec d’autres langages tels que le C et le C++, les structures de données, les apports dans les domaines comme celui de l’apprentissage automatique et les aides en ligne disponibles pour chacun des deux langages.

Pour Matloff, certes, Python est bien plus élégant dans sa syntaxe que le langage R, mais sa courbe d’apprentissage est plus compliquée que celle de R, ce qui ne joue pas forcément en sa faveur. Pour même commencer à utiliser Python pour la science de données, dit-il, il faut apprendre beaucoup de choses qui ne sont pas en Python de base, par exemple, NumPy, Pandas et matplotlib. En revanche, les types de matrices et les graphiques de base sont intégrés à la base au langage R. Pour lui, le novice peut effectuer de simples analyses de données en quelques minutes. Les bibliothèques Python peuvent être difficiles à configurer, même pour les utilisateurs avertis, alors que la plupart des packages R fonctionnent immédiatement. Cependant, certains pensent que R ne propose pas de boucle efficace (for serait super lent en R).

Comparant les bibliothèques Python et R disponibles pour l’analyse de données, il a écrit que les bibliothèques spécifiques sont plus nombreuses et facilement trouvables dans R à travers CRAN que Python par l'intermédiaire de PyPI (Python package index). Selon ses explications, ces deux langages possèdent de solides bibliothèques permettant d’écrire de puissants algorithmes de machine learning. À titre illustratif, R possède une pléthore de packages spécifiquement développés pour faire de la science des données. Cela rend la science des données plus simple à effectuer. Notamment, un excellent package nommé Caret (Classification And Regression Training) existe et est spécialisé en machine learning (apprentissage automatique). D'autres pensent toutefois qu'il n'y a pas d'interface commune pour la myriade de paquets R, qu'il faut donc apprendre une nouvelle syntaxe pour chaque algo (contrairement à scikit-learn).

Ce package permet de mener un projet de machine learning de A à Z, en commençant par créer le jeu d'entraînement et de test, en passant par l’exploration et la normalisation des données, jusqu’au tuning des hyperparamètres et la comparaison des modèles pour déterminer celui qui donne les meilleurs résultats sur vos données. Il est extrêmement bien documenté, en anglais bien sûr. De plus, la création de graphiques est simple et puissante grâce au package ggplot2 et la manipulation de données est optimisée grâce au package dplyr. Tout comme R, Python possède des bibliothèques spécifiques pour faciliter l’analyse de données. L’une des bibliothèques les plus populaires est la librairie Panda pour manipuler de grands jeux de données.

Pour ce qui est du machine learning, la librairie la plus populaire est Scikit-Learn qui permet de faire de la classification, de la régression, du clustering ou encore de la réduction de dimension, tout comme R avec le package CARET. La documentation est aussi très bien faite, en anglais encore une fois, mais extrêmement complète et accessible même pour les débutants. Pour ce qui est des graphiques, deux bibliothèques peuvent être utilisées. Matplotlib, qui est très puissante, mais aussi très complexe. Et Bokeh qui se rapproche un peu de Shiny, et qui permet la création de graphiques interactifs pour le web.

Au niveau des bibliothèques pour l’apprentissage automatique, Matloff donne un léger avantage aux bibliothèques de Python. Néanmoins, il estime que la puissance des bibliothèques Python provient de la définition de certaines opérations de lissage d'image qui pourraient facilement être implémentées dans l' encapsuleur Keras de R et pour ce faire, une version purement R de TensorFlow pourrait être développée. À part cela, il a également souligné que R est loin devant Python pour ce qui est de l’exactitude statistique. « Pour être franc, je trouve que les personnes écrivent des algorithmes de machine learning et qui défendent le plus souvent Python ont souvent une compréhension médiocre et parfois même un dédain pour les problèmes statistiques liés au blanchiment de capitaux », s’est-il justifié.

Dans le cas du calcul parallèle, il arrive à la conclusion selon laquelle ni la version de base de R ni celle de Python ne prennent en charge le calcul multicœur, mais il attribue un léger avantage à R sur cet aspect. Les threads en Python sont intéressants pour les E/S, mais leur calcul parallèle est impossible en raison du fameux verrou d'interprète global. Le package de multitraitement de Python n'est pas une bonne solution de contournement, pas plus que le package “parallèle” de R. Les bibliothèques externes prenant en charge le calcul en grappes sont acceptables dans les deux langages. Actuellement, Python a de meilleures interfaces avec les GPU, a-t-il expliqué.

Plus loin dans sa comparaison, Matloff estime que R est également en avance sur Python pour ce qui est de l’interfaçage C/C++ et de la métaprogrammation. Il a souligné que bien qu'il existe des outils comme Swig pour interfacer Python avec le C/C++, rien n'est aussi puissant à distance que Rcpp pour le moment. Le package Pybind11 est en cours de développement. En outre, avance-t-il, la nouvelle philosophie ALTREP pour le langage R offre un grand potentiel d'amélioration des performances et de la convivialité.

En affirmant que R devance légèrement Python dans la métaprogrammation, il donne l’exemple selon laquelle bien que les fonctions soient des objets dans les deux langages, R prend cela plus au sérieux que Python. « Chaque fois que je travaille en Python, je suis ennuyé par le fait que je ne peux pas imprimer une fonction sur le terminal, ce que je fais souvent dans R, Python a juste un paradigme de POO. En R, vous avez le choix entre plusieurs options (S3, S4, R6, etc.), bien que certains puissent en débattre. C’est une bonne chose. Étant donné les fonctions magiques de métaprogrammation de R (code qui produit du code), les informaticiens devraient baver sur R », a-t-il fait savoir.

Il aborde d’autres aspects comme l’unité linguistique et les structures de données liées dans lesquels il déclare que Python arrive en première position. D’après son explication, les structures de données informatiques classiques, par exemple les arbres binaires, sont faciles à implémenter en Python. Bien que cela puisse être fait dans R de différentes manières, ce n'est pas aussi bon. Ce n’est pas un gros problème pour la science des données, mais cela se pose dans certains contextes. Maintenant pour ce qui est de l’aide en ligne, il estime que la fonction help() de R est beaucoup plus informative que celle de Python. Et surtout, dit-il, la coutume qui consiste à écrire des vignettes dans des packages R fait de R un gagnant indirect dans cet aspect.

Enfin, en abordant l’interopérabilité R/Python, selon lui, RStudio doit être félicité pour le développement du paquet réticulé qui servira de pont entre Python et R. « C'est un effort remarquable, qui fonctionne bien pour le calcul pur. Mais pour autant que je sache, cela ne résout pas les problèmes épineux qui se posent en Python, par exemple les environnements virtuels. À l'heure actuelle, je ne recommande pas l'écriture de code mixte Python/R », a-t-il conclu.

Source : Norm Matloff

Et vous ?

Quel est votre avis sur le sujet ?
Selon vous, entre R et Python, lequel est plus adapté pour la science des données ? Pourquoi ?
Les raisons avancées par Norm Matloff sont-elles pertinentes ou pas selon vous ? Pourquoi ?

Voir aussi

Science des données : Julia, R ou Python ? Un petit aperçu des avantages et inconvénients du langage Julia

Meilleurs langages en 2018 selon l'IEEE : Python conforte sa place de leader grâce à son ascension dans le machine learning et l'embarqué

R plus prisé que SAS pour l'analyse de données, mais Python est le langage le plus populaire, selon le Data Science Job Report 2017

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Samir_OUCHENE
Membre à l'essai https://www.developpez.com
Le 17/06/2019 à 11:06
J'utilise Python (Numpy, Scipy, Pandas, ...etc) et je les trouve super bien.
0  0 
Avatar de Neckara
Inactif https://www.developpez.com
Le 17/06/2019 à 11:11
J'utilise JavaScript .

Bon OK, avec des appels à R pour 2-3 trucs.
0  0 
Avatar de htoukour
Membre régulier https://www.developpez.com
Le 18/06/2019 à 16:37
Python évidemment. Vu ce que on peu accomplir avec ce langage, R est loin derrière.
0  0 
Avatar de Jonathan muswil
Membre à l'essai https://www.developpez.com
Le 02/07/2019 à 6:43
On dirait que python tiens bien donc suis pour
0  0 
Avatar de gerard093
Membre actif https://www.developpez.com
Le 29/04/2020 à 16:59
Ces deux langages n'ont pas le même usage, ce qui limite l'intérêt des comparaisons.

R a été développé dans un premier temps dans une optique financière (économétrie) puis s'est ouvert à d'autres domaines comme les bio statistiques. C'est une approche vectorielle des études, au même titre que d'autres langages comme matlab ou octave.

Python est un langage plus généraliste. Avec Python, on a un langage de programmation complet d'où sa lenteur. Avec Python, on peut faire des applications web, de la cyber défense, gérer des scripts shell, des robots ... Python est scalaire. Plus lent d'exécution mais plus facile d'utilisation pour un pur informaticien.

Les deux répondent aux besoins exprimés dans leur domaine.
0  0 
Avatar de dev_ggy
Membre éprouvé https://www.developpez.com
Le 30/04/2020 à 8:26
Je suis d'accord avec le précédent message sur le fait qu'on ne fait pas tout à fait la même chose avec Python et R.
Si R est très performant concernant le nombre de modules statistiques même très spécifique et bien plus que Python.
Python est bien plus solide en déploiement et production, mais aussi un choix a été fait par beaucoup de Framework autour du Deep Learing pour ce langage.
0  0 
Avatar de whitebee
Nouveau Candidat au Club https://www.developpez.com
Le 06/01/2022 à 10:55
Parfaitement d'accord avec les 2 commentaires précédents. Il ne faut surtout pas oublier que les 2 langages ont des publics très différents.

Allez demander à un enseignant-chercheur ou à un thésard, déjà overbooké entre ses activités de recherche, d'administratif, de diffusion et d'enseignement de se coltiner l'apprentissage de Python en plus.
R possède l'avantage d'être accessible à un néophyte avec une excellente courbe d'apprentissage et une multitude de packages qui n'améliorent pas forcément les performances mais simplifient la manipulation et l'analyse de données. Il ne faut pas oublier que pour certaines personnes, un langage de programmation doit rester un outil, et pas une fin en soi et c'est en cela que R devance de très loin Python.

A l'inverse, R est une calamité pour toute personne habituée à programmer, le code est bien plus fiable et respecte davantage la typologie que l'on peut retrouver dans d'autres langages. C'est pour ça qu'à mon sens en tous cas, y'a pas de gagnant à la guéguerre R vs Python. Que chacun utilise le langage avec lequel il se sente le plus à l'aise, ça n'empêchera pas le monde de tourner que des scripts soient développés en R plutôt qu'en Python.
0  0