Un passage de R à Python en vaut-il la peine? [fermé]


31

Je viens de terminer un programme de master d'un an en science des données où on nous a enseigné R. J'ai trouvé que Python est plus populaire et a une plus grande communauté en IA.

Est-ce que cela vaut la peine pour quelqu'un dans ma position de passer en Python et si oui, pourquoi? Python possède-t-il des fonctionnalités révolutionnaires non disponibles dans R ou s'agit-il simplement d'une question de communauté?


2
S'agissait-il d'un cours dans un collège public, une université privée ou dans le système d'enseignement d'entreprise?
Manuel Rodriguez

12
Vous ne pouvez pas passer à Python. Vous ne parlez pas d'un projet que vous avez déjà écrit en R et que vous souhaitez porter sur Python, vous posez simplement des questions sur l'apprentissage de Python (sans oublier R). Vaut-il la peine d'apprendre Python? De nos jours, il est presque impossible de ne pas apprendre Python si vous travaillez avec quelque chose lié à la gestion des données avec un ordinateur ...
lvella

1
Je ne sais pas pourquoi cela n'a pas été clos car basé sur l'opinion, mais je suis content.
Evorlor

1
@Evorlor Voir ma réponse, qui indique en effet que cette question mènera également à des réponses principalement basées sur l'opinion. En outre, j'ai voté pour clore cette question car elle est principalement basée sur l'opinion, même si j'ai également donné une réponse. Sur ce site, il y a beaucoup de questions de ce type. Je ne sais plus si c'est une bonne chose ou non, mais les réponses actuelles à cette question ont été utiles à beaucoup de gens.
nbro

2
Comment est-ce que ce n'est pas fermé ?? Il s'agit d'une question canonique basée sur l'opinion.
spacetyper

Réponses:


60

Je veux recadrer votre question.

Ne pensez pas à changer, pensez à ajouter.

En science des données, vous pourrez aller très loin avec python ou r mais vous irez plus loin avec les deux.

Python et r s'intègrent très bien, grâce au reticulatepackage. Je range souvent les données dans r parce que c'est plus facile pour moi, former un modèle en python pour bénéficier d'une vitesse supérieure et visualiser les résultats en r dans beau ggplottout en un seul carnet!

Si vous savez déjà qu'il n'y a aucun sens à l'abandonner, utilisez-le là où il est sensé et facile pour vous. Mais c'est 100% une bonne idée d'ajouter du python pour de nombreuses utilisations.

Une fois que vous vous sentirez à l'aise dans les deux, vous aurez un flux de travail qui vous convient le mieux dominé par votre langue préférée.


Je partage entièrement votre point de vue. Ajoutez-le simplement et essayez de ne pas abandonner votre ensemble de compétences R.
Jens Kohl

3
vote positif pour reticulate. rstudio a même un certain support pour inspecter python et est en train d'en ajouter plus
blues

Le seul problème avec l'utilisation des deux est que tout le monde en aval dépend aussi de R et Python. Bien que je sois d'accord pour "ajouter" à vos compétences, je garderais les choses pures lors de l'écriture de scripts!
PascalVKooten

reticulatepermet à R d'utiliser Python; de même, rpy2permet à Python d'utiliser R. Il est courant pour les langages de programmation ayant des objectifs similaires d'avoir un moyen de se parler.
JG

Exactement. N'échangez pas votre outil, mais ajoutez-en un à votre ceinture. Maintenant, vous avez plus d'outils, ce qui vous permet de résoudre plus de problèmes d'une meilleure manière.
Mast

28

Bien entendu, ce type de questions conduira également à des réponses principalement basées sur l'opinion. Néanmoins, il est possible d'énumérer les forces et les faiblesses de chaque langue, en ce qui concerne l'apprentissage automatique, les statistiques et les tâches d'analyse de données, que j'essaierai d'énumérer ci-dessous.

R

Forces

  • R a été conçu et développé pour les statisticiens et les analystes de données, il fournit donc, dès le départ (ils font partie du langage lui-même), des fonctionnalités et des installations pour les statisticiens, qui ne sont pas disponibles en Python, sauf si vous installer un package associé. Par exemple, la trame de données, que Python ne fournit pas, sauf si vous installez le fameux pandaspackage Python . Il existe d'autres exemples comme les matrices, les vecteurs, etc. En Python, il existe également des structures de données similaires, mais elles sont plus générales, donc pas spécifiquement destinées aux statisticiens.

  • Il existe de nombreuses bibliothèques statistiques.

La faiblesse

Python

Forces

  • De nombreuses personnes et entreprises, dont Google et Facebook, investissent beaucoup dans Python. Par exemple, le langage de programmation principal de TensorFlow et PyTorch (deux frameworks d'apprentissage automatique largement utilisés) est Python. Il est donc très peu probable que Python ne continue pas d'être largement utilisé dans l'apprentissage automatique pendant au moins 5 à 10 ans de plus.

  • La communauté Python est probablement beaucoup plus grande que la communauté R. En fait, par exemple, si vous regardez l'index de Tiobe , Python est placé 3e, tandis que R est placé 20e.

  • Python est également largement utilisé en dehors des communautés de statistiques ou d'apprentissage automatique. Par exemple, il est utilisé pour le développement web (voir par exemple les frameworks Python Django ou Flask).

  • Il existe de nombreuses bibliothèques d'apprentissage automatique (par exemple TensorFlow et PyTorch).

La faiblesse

  • Il ne fournit pas, dès le départ, les fonctionnalités d'analyse statistique et de données fournies par R, sauf si vous installez un package approprié. Cela peut être une faiblesse ou une force, selon votre point de vue philosophique.

Il existe d'autres avantages et inconvénients possibles de ces langues. Par exemple, les deux langues sont dynamiques. Cependant, cette fonctionnalité peut être à la fois un avantage et un inconvénient (et elle n'est pas strictement liée à l'apprentissage automatique ou aux statistiques), donc je ne l'ai pas énumérée ci-dessus. J'ai évité de mentionner les fonctionnalités de langage d'opinion, telles que la lisibilité du code et la courbe d'apprentissage, pour des raisons évidentes (par exemple, toutes les personnes n'ont pas la même expérience de programmation).

Conclusion

Python vaut vraiment la peine d'apprendre si vous étudiez l'apprentissage automatique ou les statistiques. Cependant, cela ne signifie pas que vous n'utiliserez plus R. R pourrait encore être plus pratique pour certaines tâches.


3
Il semble que l'ensemble de fonctionnalités «prêt à l'emploi» ne soit pas pertinent. L'important est la disponibilité de packages qui font ce que vous voulez, non?
Dean MacGregor

1
@DeanMacGregor Si vous n'avez pas accès à Internet, cette fonctionnalité est pertinente! De plus, si un langage de programmation fournit déjà une fonctionnalité prête à l'emploi, vous n'avez pas à perdre de temps à la rechercher.
nbro

Étant donné que Python est fortement infesté d'être `` piles incluses '', sa faiblesse n'est pas fréquente. D' autant plus que il y a des installations Python utilisés qui font ont des progiciels statistiques inclus. Pour la science des données en particulier, Anaconda est très populaire et résout votre problème immédiat.
Mast

6

Je n'ai pas eu ce choix car j'ai été obligé de passer de R à Python:

Cela dépend de votre environnement : lorsque vous êtes intégré dans un département d' ingénierie , un groupe de travail technique ou quelque chose de similaire à Python est plus réalisable.

Lorsque vous êtes entouré de scientifiques et surtout de statisticiens , restez avec R.

PS: R propose également des keras et tensorflow bien qu'il soit implémenté sous le capot de python. Seuls des trucs très avancés vous feront avoir besoin de Python. Bien que je m'habitue de plus en plus à Python, le synthax dans R est plus facile . Et bien que chaque paquet ait le sien, il est en quelque sorte cohérent alors que Python ne l'est pas .. Et ggplot est si fort. Python a un clone (plotnine) mais il manque plusieurs fonctionnalités (importantes). En principe, vous pouvez faire presque autant que dans R mais surtout la visualisation et la manipulation des données sont beaucoup plus faciles dans R. Ainsi, la bibliothèque Python la plus célèbre, pandas, est un clone de R.

PSS: les statistiques avancées visent définitivement R. Python propose de nombreux outils et méthodes de tous les jours pour un data scientist, mais il n'atteindra jamais ces> 13 000 packages que R fournit. Par exemple, j'ai dû faire une régression inverse et python ne propose pas cela. Dans R, vous pouvez choisir entre plusieurs tests de confiance et s'il est linéaire ou non linéaire. Il en va de même pour les modèles mixtes: il est implémenté en python mais il est tellement basique que je ne peux pas réaliser à quel point cela peut être suffisant pour quelqu'un.


4

Je dirais oui. Python est meilleur que R pour la plupart des tâches, mais R a sa niche et vous voudrez toujours l'utiliser dans de nombreuses circonstances.

De plus, l'apprentissage d'une deuxième langue améliorera vos compétences en programmation.

Ma propre perspective sur les points forts de R vs Python est que je préférerais R pour un petit programme à usage unique impliquant des tableaux ou des graphiques, ou un travail exploratoire dans la même veine. Je préférerais Python pour tout le reste.

  • R est vraiment bon pour la purée de table. Si la plupart de ce qu'un programme particulier va faire est de faire passer certaines tables sous différentes formes, alors R est la chose à choisir. Python a des outils pour cela, mais R est conçu pour cela et le fait mieux.
  • Cela vaut la peine de passer à R chaque fois que vous devez créer un graphique, car ggplot2 est un chef-d'œuvre de l'utilisabilité de l'API et matplotlib est une horreur rampante.
  • Python est bien conçu pour la programmation à usage général. Il dispose d'un ensemble très bien conçu de structures de données standard, de bibliothèques standard et d'instructions de flux de contrôle.
  • R est mal adapté à la programmation à usage général. Il ne gère pas bien les données arborescentes ou graphiques. Il a certaines règles (comme être en mesure d'examiner et de modifier votre portée parent) qui sont immédiatement pratiques, mais lorsqu'elles sont utilisées, elles conduisent à des programmes difficiles à développer, à modifier ou à composer.
  • R contient également de mauvaises choses. Ce ne sont pour la plupart que des restes historiques comme les trois différents systèmes d'objets.

Pour en savoir plus sur le dernier point: la programmation informatique bien faite est lego où vous faites vos propres briques (fonctions et modules).

Les programmes sont généralement modifiés et réutilisés au-delà de leur conception d'origine. Au fur et à mesure que vous les construisez, il est utile de penser aux pièces qui pourraient être réutilisées et de les construire d'une manière générale qui leur permettra de se connecter aux autres briques.

R vous encourage à faire fondre toutes les briques ensemble.


1

Comme d'autres l'ont dit, ce n'est pas un "interrupteur". Mais vaut-il la peine d'ajouter Python à votre arsenal? Je dirais certainement. En science des données, Python est populaire et devient de plus en plus populaire, tandis que R recule quelque peu. Et dans les domaines de l'apprentissage automatique et des réseaux de neurones, je dirais que Python est le langage principal maintenant - je ne pense pas que R se rapproche vraiment ici en termes d'utilisation. La raison de tout cela est la généralité. Python est conçu comme un langage de programmation général et vous permet de scripter facilement toutes sortes de tâches. Si vous restez strictement dans un monde statistique soigneusement structuré, R est génial, mais avec l'IA, vous finissez souvent par devoir faire des choses nouvelles et diverses, et je ne pense pas que R puisse battre Python. Et pour cette raison,


0

C'est totalement mon opinion personnelle.

J'ai lu dans mon bureau (sur un chantier de construction) qu '"il y a un bon outil pour chaque tâche".

Je m'attends à ce que je fasse face à une variété de tâches, en tant que programmeur. Je veux autant d'outils que possible "acheter ou investir", autant que possible. Un jour, un outil m'aidera à le résoudre, un autre jour un autre outil. R (pour les statistiques) et Python (pour en général) sont deux outils que je veux vraiment avec moi et je pense que cela vaut la peine d'investir pour moi.

En ce qui concerne le commutateur, j'utiliserai l'outil le plus efficace que je connaisse (où l'efficacité est mesurée par les exigences du client, l'investissement en temps et en coûts et la facilité de codage). Plus je connais d'outils, plus on est de fous! Bien sûr, il y a une limite pratique à cela.

Tout cela est mon opinion personnelle et pas nécessairement correcte.


0

Il semble que vous ayez investi 1 an pour la science des données avec R et intégré dans l'environnement R, mais que vous souhaitiez explorer python pour la science des données.

Apprenez d'abord les bases du python comme le fonctionnement des listes et des tuples et le fonctionnement des classes et des objets.

Ensuite, mettez la main à la pâte avec certaines bibliothèques comme les pandas numpy matplotlib. Apprenez tensorflow ou keras, puis optez pour la science des données.


-1

La personne qui poursuit deux lapins n'attrape ni l'un ni l'autre

Et oui, Python est plus populaire. Je travaille dans les deux mais, pour parler affaires, il est facile de trouver un emploi sur Python qu'en R.

Vous pouvez donc:

  • Choisissez Python car il est plus populaire. Cependant, vous devez repartir de zéro.

Ou

  • Restez avec R, après tout, vous avez un an de formation avec R. Mais ce n'est pas populaire.

La suggestion ici que l'apprentissage d'un langage de programmation supplémentaire vous rendra en quelque sorte pire encore est absurde. L'apprentissage de langages de programmation supplémentaires, en particulier ceux qui ne sont pas familiers, améliorera toujours vos compétences en tant que programmeur dans n'importe quel langage.
Will Da Silva
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.