La data science est devenue incontournable dans tous les secteurs. De la banque à l’assurance en passant par la santé, des quantités massives de données sont générées chaque seconde. Il est donc essentiel d’exploiter ce volume pour en extraire des insights actionnables et passer à l’exécution. De nombreux outils, sous forme de langages de programmation, sont disponibles sur le marché. Parmi eux, Python et R semblent mener la course.
\n
Python et R sont largement utilisés dans l’univers de la data science. Les deux langages offrent un vaste éventail d’outils, avec des fonctions parfaitement adaptées aux besoins de la discipline. Python est un langage généraliste, utilisé pour de nombreuses applications, tandis que R est un langage et un environnement dédiés au calcul statistique et à la visualisation.
\n
Panorama des écosystèmes Python et R
\n
Passons en revue les principaux aspects de ces langages, ainsi que leurs forces et leurs limites.
\n
Le langage de programmation Python
\n
![\"python\"]()
\n
Python est un langage interprété, de haut niveau et à usage général. Créé et publié en 1991 par Guido Van Rossum, il a rapidement gagné en popularité, notamment en data science. Aujourd’hui, Python fait partie des langages qui connaissent la plus forte croissance dans le monde.
\n
Quelques raisons de ce succès :
\n
\n- Langage orienté objet
\n- Usage généraliste
\n- Une communauté extrêmement active
\n- Simple, lisible et facile à apprendre
\n- Des bibliothèques efficaces comme pandas, numpy et scikit-learn, qui en font un excellent choix pour l’apprentissage automatique.
\n
\n
Cependant, pour le calcul statistique, Python est moins bien doté et ne propose pas autant de bibliothèques spécialisées que R.
\n
Le langage de programmation R
\n
![\"R\"]()
\n
R est avant tout un logiciel pour le calcul statistique et la création de graphiques, soutenu par la R Foundation for Statistical Computing. Apparu en août 1993, avec une première version stable en 1995, il est depuis largement adopté par les statisticiens et data miners pour l’analyse statistique.
\n
Ce qui distingue R :
\n
\n- Des packages pour quasiment toute application statistique imaginable. Le CRAN héberge aujourd’hui plus de 10 000 packages.
\n- D’excellentes bibliothèques de visualisation comme ggplot2.
\n- La capacité de réaliser des analyses autonomes avec les packages intégrés.
\n
\n
Revers de la médaille : en termes de performances, R n’est pas le plus rapide et peut devenir gourmand en mémoire sur de très grands jeux de données.
\n
Utiliser Python et R ensemble
\n
R et Python sont d’excellents outils, souvent perçus à tort comme des rivaux. Plutôt que de les opposer, profitons de leurs atouts respectifs pour bénéficier du meilleur des deux mondes.
\n
La communauté data compte encore beaucoup de personnes qui travaillent exclusivement avec un seul langage. D’autres utilisent à la fois Python et R, mais ils restent minoritaires. Nombreux sont aussi ceux qui restent fidèles à un langage tout en regrettant de ne pas disposer de certaines capacités de l’autre. Par exemple, les utilisateurs de R aimeraient parfois profiter des capacités orientées objet natives de Python, tandis que des utilisateurs de Python souhaiteraient accéder à l’éventail complet de distributions statistiques disponible dans R.
\n
Le graphique ci-dessous présente les résultats d’une enquête menée par Red Monk au troisième trimestre 2018. Basés sur la popularité des langages sur Stack Overflow et Github, ces résultats montrent clairement que R et Python occupent une place de choix pour la data science. Il n’y a donc aucune raison de ne pas les faire cohabiter au sein d’un même projet. L’objectif final reste de produire de meilleures analyses et des insights plus pertinents ; le choix du langage ne devrait pas être un frein.
\n
![\"programming]()
\n
Comment utiliser Python et R dans un même projet ?
\n
Intégrer du SQL dans un script R ou Python ne nous pose aucun problème. Pourquoi ne pas combiner de la même manière la puissance statistique de R et les capacités de programmation de Python ? Oui, c’est possible, et des bibliothèques gèrent très bien ces passerelles.
\n
Deux approches principales permettent d’utiliser Python et R côte à côte dans un seul projet.
\n
R au sein de Python
\n
Il s’agit d’appeler des fonctions R depuis un script Python. Quelques bibliothèques prévues à cet effet :
\n
\n
PypeR propose un moyen simple d’accéder à R depuis Python via des pipes. PypeR est aussi disponible sur le Python Package Index, ce qui facilite l’installation. PypeR est particulièrement utile lorsqu’il n’est pas nécessaire de transférer des données de manière interactive et fréquente entre Python et R. En exécutant R via un pipe, le programme Python gagne en souplesse pour le contrôle des sous-processus, la gestion mémoire et la portabilité sur les principaux systèmes d’exploitation (Windows, GNU/Linux et macOS).
\n
![\"pyper\"]()
\n
Conventions de conversion des objets Python en objets R
\n
\n
pyRserve est une autre bibliothèque conçue pour cet usage. Elle utilise Rserve comme passerelle de connexion RPC. Via cette connexion, on peut définir des variables dans R depuis Python et appeler à distance des fonctions R. Les objets R sont exposés comme des instances de classes implémentées en Python, avec des fonctions R liées comme méthodes dans plusieurs cas.
\n
\n
La bibliothèque rpy2 est plus utilisée que les deux précédentes, notamment parce qu’elle est activement et vigoureusement développée. Elle exécute un R embarqué dans un processus Python. Elle fournit un cadre permettant de traduire des objets Python en objets R, de les passer à des fonctions R, puis de convertir les sorties R en objets Python.
\n
![\"rpy2\"]()
\n
Un avantage de l’intégration de R dans Python est de pouvoir utiliser facilement, depuis Python, les excellents packages de R comme ggplot2, tidyr, dplyr, etc. Voyons par exemple comment exploiter ggplot2 pour la cartographie dans Python.
\n
\n
![\"basic]()
\n
\n
![\"scatter]()
\n
\n
![\"geometry\"]()
\n
\n
![\"\"]()
\n
Ressources rpy2
\n
Pour un tour d’horizon complet et des détails sur l’installation et l’utilisation de rpy2, consultez :
\n
\n
Python au sein de R
\n
Il est également possible d’exécuter des scripts Python dans R grâce aux options suivantes :
\n
\n
Ce package implémente une interface vers Python via Jython. Il permet à d’autres packages d’embarquer du code Python aux côtés de R.
\n
\n
rPython est un package qui permet à R d’appeler Python. Il rend possible l’exécution de code Python, l’appel de fonctions, l’affectation et la récupération de variables, etc., depuis R.
\n
\n
SnakeCharmR est une version modernisée de rPython. Il s’agit d’un fork de \« rPython \» qui utilise \« jsonlite \» et apporte de nombreuses améliorations.
\n
\n
PythonInR simplifie grandement l’accès à Python depuis R en fournissant des fonctions dédiées pour interagir avec Python.
\n
\n
Le package reticulate offre un ensemble complet d’outils pour l’interopérabilité entre Python et R. Parmi toutes ces alternatives, c’est la plus utilisée, d’autant qu’elle est activement développée par RStudio.
Reticulate embarque une session Python au sein de la session R, pour une interopérabilité fluide et performante. Le package vous permet de reticulate du code Python dans R et de créer une nouvelle génération de projets tissant les deux langages.
\n
![\"R\"]()
\n
Le package reticulate propose notamment :
\n
\n- Appeler Python depuis R de multiples façons : R Markdown, exécution de scripts Python, import de modules Python, ou usage interactif dans une session R.
\n- Traduction entre objets R et Python (par exemple, entre data frames R et data frames Pandas, ou entre matrices R et tableaux NumPy).
\n- Liaison flexible avec différentes versions de Python, y compris les environnements virtuels et les environnements Conda.
\n
\n
Ressources reticulate
\n
Quelques ressources utiles pour le package reticulate :
\n
\n
Conclusion
\n
R et Python sont deux outils puissants, capables de couvrir presque tout le cycle d’un projet de data science. Il n’est d’ailleurs pas toujours nécessaire de les utiliser ensemble dans un même projet. Néanmoins, maîtriser les deux peut s’avérer très utile et vous offrir la flexibilité de travailler dans des environnements différents. Comme on le dit souvent, l’essentiel ce sont les compétences, pas les outils. Restons donc ouverts à l’apprentissage de nouveaux outils et langages lorsqu’ils nous aident à résoudre plus efficacement les problèmes.
\n
Pour démarrer dans l’un ou l’autre langage, suivez les cours de DataCamp : Introduction to Python ou Introduction to R. Consultez également notre tutoriel Python pour les débutants.
\n
Références :
\n
La data science est devenue incontournable dans tous les secteurs. De la banque à l’assurance en passant par la santé, des quantités massives de données sont générées chaque seconde. Il est donc essentiel d’exploiter ce volume pour en extraire des insights actionnables et passer à l’exécution. De nombreux outils, sous forme de langages de programmation, sont disponibles sur le marché. Parmi eux, Python et R semblent mener la course.
\nPython et R sont largement utilisés dans l’univers de la data science. Les deux langages offrent un vaste éventail d’outils, avec des fonctions parfaitement adaptées aux besoins de la discipline. Python est un langage généraliste, utilisé pour de nombreuses applications, tandis que R est un langage et un environnement dédiés au calcul statistique et à la visualisation.
\nPanorama des écosystèmes Python et R
\nPassons en revue les principaux aspects de ces langages, ainsi que leurs forces et leurs limites.
\nLe langage de programmation Python
\n![\"python\"]()
\nPython est un langage interprété, de haut niveau et à usage général. Créé et publié en 1991 par Guido Van Rossum, il a rapidement gagné en popularité, notamment en data science. Aujourd’hui, Python fait partie des langages qui connaissent la plus forte croissance dans le monde.
\nQuelques raisons de ce succès :
\n\n- Langage orienté objet
\n- Usage généraliste
\n- Une communauté extrêmement active
\n- Simple, lisible et facile à apprendre
\n- Des bibliothèques efficaces comme pandas, numpy et scikit-learn, qui en font un excellent choix pour l’apprentissage automatique.
\n
\nCependant, pour le calcul statistique, Python est moins bien doté et ne propose pas autant de bibliothèques spécialisées que R.
\nLe langage de programmation R
\n![\"R\"]()
\nR est avant tout un logiciel pour le calcul statistique et la création de graphiques, soutenu par la R Foundation for Statistical Computing. Apparu en août 1993, avec une première version stable en 1995, il est depuis largement adopté par les statisticiens et data miners pour l’analyse statistique.
\nCe qui distingue R :
\n\n- Des packages pour quasiment toute application statistique imaginable. Le CRAN héberge aujourd’hui plus de 10 000 packages.
\n- D’excellentes bibliothèques de visualisation comme ggplot2.
\n- La capacité de réaliser des analyses autonomes avec les packages intégrés.
\n
\nRevers de la médaille : en termes de performances, R n’est pas le plus rapide et peut devenir gourmand en mémoire sur de très grands jeux de données.
\nUtiliser Python et R ensemble
\nR et Python sont d’excellents outils, souvent perçus à tort comme des rivaux. Plutôt que de les opposer, profitons de leurs atouts respectifs pour bénéficier du meilleur des deux mondes.
\nLa communauté data compte encore beaucoup de personnes qui travaillent exclusivement avec un seul langage. D’autres utilisent à la fois Python et R, mais ils restent minoritaires. Nombreux sont aussi ceux qui restent fidèles à un langage tout en regrettant de ne pas disposer de certaines capacités de l’autre. Par exemple, les utilisateurs de R aimeraient parfois profiter des capacités orientées objet natives de Python, tandis que des utilisateurs de Python souhaiteraient accéder à l’éventail complet de distributions statistiques disponible dans R.
\nLe graphique ci-dessous présente les résultats d’une enquête menée par Red Monk au troisième trimestre 2018. Basés sur la popularité des langages sur Stack Overflow et Github, ces résultats montrent clairement que R et Python occupent une place de choix pour la data science. Il n’y a donc aucune raison de ne pas les faire cohabiter au sein d’un même projet. L’objectif final reste de produire de meilleures analyses et des insights plus pertinents ; le choix du langage ne devrait pas être un frein.
\n![\"programming]()
\nComment utiliser Python et R dans un même projet ?
\nIntégrer du SQL dans un script R ou Python ne nous pose aucun problème. Pourquoi ne pas combiner de la même manière la puissance statistique de R et les capacités de programmation de Python ? Oui, c’est possible, et des bibliothèques gèrent très bien ces passerelles.
\nDeux approches principales permettent d’utiliser Python et R côte à côte dans un seul projet.
\nR au sein de Python
\nIl s’agit d’appeler des fonctions R depuis un script Python. Quelques bibliothèques prévues à cet effet :
\n1. PypeR
\nPypeR propose un moyen simple d’accéder à R depuis Python via des pipes. PypeR est aussi disponible sur le Python Package Index, ce qui facilite l’installation. PypeR est particulièrement utile lorsqu’il n’est pas nécessaire de transférer des données de manière interactive et fréquente entre Python et R. En exécutant R via un pipe, le programme Python gagne en souplesse pour le contrôle des sous-processus, la gestion mémoire et la portabilité sur les principaux systèmes d’exploitation (Windows, GNU/Linux et macOS).
\n![\"pyper\"]()
\nConventions de conversion des objets Python en objets R
\n2. pyRserve
\npyRserve est une autre bibliothèque conçue pour cet usage. Elle utilise Rserve comme passerelle de connexion RPC. Via cette connexion, on peut définir des variables dans R depuis Python et appeler à distance des fonctions R. Les objets R sont exposés comme des instances de classes implémentées en Python, avec des fonctions R liées comme méthodes dans plusieurs cas.
\n3. rpy2
\nLa bibliothèque rpy2 est plus utilisée que les deux précédentes, notamment parce qu’elle est activement et vigoureusement développée. Elle exécute un R embarqué dans un processus Python. Elle fournit un cadre permettant de traduire des objets Python en objets R, de les passer à des fonctions R, puis de convertir les sorties R en objets Python.
\n![\"rpy2\"]()
\nUn avantage de l’intégration de R dans Python est de pouvoir utiliser facilement, depuis Python, les excellents packages de R comme ggplot2, tidyr, dplyr, etc. Voyons par exemple comment exploiter ggplot2 pour la cartographie dans Python.
\n\n- Graphique de base
\n
\n![\"basic]()
\nhttps://rpy2.github.io/doc/latest/html/graphics.html#plot
\n![\"scatter]()
\n\n- Géométrie
\n
\n![\"geometry\"]()
\nhttps://rpy2.github.io/doc/latest/html/graphics.html#geometry
\n![\"\"]()
\nRessources rpy2
\nPour un tour d’horizon complet et des détails sur l’installation et l’utilisation de rpy2, consultez :
\n\n- Documentation officielle de rpy2
\n- RPy2 : combiner la puissance de R + Python pour la data science
\n- Accéder à R depuis Python avec RPy2
\n
\nPython au sein de R
\nIl est également possible d’exécuter des scripts Python dans R grâce aux options suivantes :
\n1. rJython
\nCe package implémente une interface vers Python via Jython. Il permet à d’autres packages d’embarquer du code Python aux côtés de R.
\n2. rPython
\nrPython est un package qui permet à R d’appeler Python. Il rend possible l’exécution de code Python, l’appel de fonctions, l’affectation et la récupération de variables, etc., depuis R.
\n3. SnakeCharmR
\nSnakeCharmR est une version modernisée de rPython. Il s’agit d’un fork de \« rPython \» qui utilise \« jsonlite \» et apporte de nombreuses améliorations.
\n4. PythonInR
\nPythonInR simplifie grandement l’accès à Python depuis R en fournissant des fonctions dédiées pour interagir avec Python.
\n5. reticulate
\nLe package reticulate offre un ensemble complet d’outils pour l’interopérabilité entre Python et R. Parmi toutes ces alternatives, c’est la plus utilisée, d’autant qu’elle est activement développée par RStudio.
\nReticulate embarque une session Python au sein de la session R, pour une interopérabilité fluide et performante. Le package vous permet de reticulate du code Python dans R et de créer une nouvelle génération de projets tissant les deux langages.
![\"R\"]()
\nLe package reticulate propose notamment :
\n\n- Appeler Python depuis R de multiples façons : R Markdown, exécution de scripts Python, import de modules Python, ou usage interactif dans une session R.
\n- Traduction entre objets R et Python (par exemple, entre data frames R et data frames Pandas, ou entre matrices R et tableaux NumPy).
\n- Liaison flexible avec différentes versions de Python, y compris les environnements virtuels et les environnements Conda.
\n
\nRessources reticulate
\nQuelques ressources utiles pour le package reticulate :
\n\n- La documentation est très complète, avec de nombreux exemples et cas d’usage pour bien démarrer.
\n- https://longhowlam.wordpress.com/2017/04/10/test-driving-python-integration-in-r-using-the-reticulate-package/
\n- SNAKES IN A PACKAGE: COMBINING PYTHON AND R WITH RETICULATE
\n
\nConclusion
\nR et Python sont deux outils puissants, capables de couvrir presque tout le cycle d’un projet de data science. Il n’est d’ailleurs pas toujours nécessaire de les utiliser ensemble dans un même projet. Néanmoins, maîtriser les deux peut s’avérer très utile et vous offrir la flexibilité de travailler dans des environnements différents. Comme on le dit souvent, l’essentiel ce sont les compétences, pas les outils. Restons donc ouverts à l’apprentissage de nouveaux outils et langages lorsqu’ils nous aident à résoudre plus efficacement les problèmes.
\nPour démarrer dans l’un ou l’autre langage, suivez les cours de DataCamp : Introduction to Python ou Introduction to R. Consultez également notre tutoriel Python pour les débutants.
\nRéférences :
\n\n- Interfacing R and Python — Andrew Collier
\n- From \« R vs Python \» to \« R and Python \»
\n