Comment R et Python se complètent-ils en data science?

54

Dans de nombreux tutoriels ou manuels, le récit semble impliquer que R et python coexistent en tant que composants complémentaires du processus d'analyse. À mes yeux, cependant, il semble que les deux langues fassent en quelque sorte la même chose.

Ma question est donc de savoir s’il existe des créneaux vraiment spécialisés pour les deux langues ou si c’est une préférence personnelle que d’utiliser l’une ou l’autre?

BioHazZzZard
la source
2
Cela ne ressemble vraiment pas à une copie de ce fil. Il ne s'agit pas de savoir comment utiliser Python pour établir des statistiques, mais comment Python peut compléter R (évidemment, R serait utilisé pour les analyses statistiques).
gung - Rétablir Monica
4
R si vous étiez statisticien il y a 10 ans. Python si vous voulez mettre votre code en production quelque part ou le réutiliser.
Djechlin
3
En raison de la popularité de ce q., Et en réponse à des demandes via des drapeaux, je l’ai rouvert mais l’ai fait en CW.
Scortchi - Réintégrer Monica
1
Ce que la plupart des réponses ont tendance à oublier, c'est qu'elles comparent le langage Python à la mise en oeuvre GNU-R. R a également d’autres implémentations (voir Renjin , écrit en Java, Microsoft R Open , qui est compilé avec Intel MKL, FastR , pqR , etc.). Celles-ci tentent de corriger certains problèmes avec GNU-R, une implémentation beaucoup plus conservatrice. De plus, rappelez-vous que R n’a pas de définition formelle.
Firebug

Réponses:

45

Ils sont complémentaires. Il est vrai que les deux peuvent faire la même chose, mais on peut en dire autant de la plupart des langues. Chacun a ses forces et ses faiblesses. La vision commune semble être que Python est le meilleur pour la collecte et la préparation de données, ainsi que pour l'analyse textuelle. R est considéré comme le meilleur pour l'analyse des données, car il s'agit avant tout d'un langage statistique.

R propose une myriade de packages pour tout ce que vous pouvez penser, mais son élément essentiel est l’analyse statistique - du khi-carré de base à l’analyse factorielle et aux modèles de risque, il est simple et robuste. Certains des plus grands noms dans les statistiques créent des packages R, et il existe une communauté vivante pour répondre à tous vos besoins. ggplot2est un standard en visualisation de données (graphiques, etc.). R est un langage vectorisé conçu pour effectuer une boucle de données de manière efficace. Il stocke également toutes les données dans la RAM, ce qui est une arme à double tranchant - il est facile à manipuler pour des ensembles de données plus petits (bien que certains puissent se disputer avec moi), mais il ne peut pas gérer correctement les mégadonnées (bien qu'il ait des packages pour le contourner). , tels que ff).

Python est considérablement plus facile à apprendre que R - en particulier pour ceux qui ont déjà utilisé la programmation. R est juste ... bizarre. Python est excellent pour la récupération de données et est le langage à utiliser pour le scraping Web (avec l'incroyable beautifulsoup). Python est connu pour sa force d'analyse syntaxique et de manipulation de texte. pandasest une excellente bibliothèque pour la manipulation, la fusion, la transformation, etc. de données, et est rapide (et probablement inspirée de R).

Python est idéal lorsque vous devez programmer. Ce n'est pas surprenant car c'est un langage généraliste. R, cependant, avec toutes ses extensions, a été construit par des statisticiens pour des statisticiens. Ainsi, bien que Python soit plus facile, plus performant et plus rapide dans de nombreuses applications, R serait la plate-forme de choix pour l’analyse statistique.

Yuval Spiegler
la source
13
En tant que personne connaissant les deux, je suis d’accord avec cela; Il peut y avoir beaucoup d'arguments stylistiques, mais la plus grande différence est qu'une fois qu'il est temps d'exécuter des modèles statistiques causaux, Python est sous-développé. Le paquet statsmodels vous donne quelques notions de base, mais n’aborde pas R, Stata ou Sas. Une exception notable est l'analyse de style d'apprentissage machine, pour laquelle scikitlearn de Python correspond bien. Pour tout le reste, je pense que de bons arguments peuvent être avancés pour dire que Python est au moins égal à R et souvent supérieur. Apprendre les deux n’est en aucun cas une mauvaise utilisation du temps.
Jeff
2
Je suis d'accord avec la plupart de ces points - mais je soulignerais davantage les problèmes - R n'est pas bon pour les grands ensembles de données et ne gère pas très bien les ensembles de données épars (la plupart des bibliothèques ne le prennent pas en charge) (c'est ce sur quoi beaucoup effectuent l'apprentissage automatique) par exemple, des modèles de type 'sac de mots' où la cardinalité d'un facteur / variable catégorielle pourrait être dans les milliers.
Seanv507
10
Ne pas démarrer un argument dans un fil de commentaires, mais le data.tablepackage dans R est spécifiquement conçu pour un travail efficace autour de grands ensembles de données, et se branche parfaitement au traitement distribué.
étoile brillante
3
Si vous pensez que Python est meilleur que R lors de l'extraction des données et de l'analyse syntaxique, vous utilisez R de manière totalement erronée. Il en va de même pour le "R n'est pas bon pour les grands ensembles de données et ne gère pas très bien les ensembles de données fragmentés (la plupart des bibliothèques ne le prennent pas en charge)" .
Gented
3
ajouter à l'augmentation de Trevor de data.table; Je suis également heureux de dire que rvestc'est un EXCELLENT outil pour gérer la plupart des tâches de grattage et qu'il est beaucoup plus facile de le faire fonctionnerbeautifulsoup
MichaelChirico
21

Je vais essayer de formuler une réponse concernant les points principaux où les deux langues entrent en jeu pour les données science / statistique / analyse des données, etc., en tant que personne utilisant les deux.

Le flux de travail dans l'analyse de données comprend généralement les étapes suivantes:

  1. Récupérer les données d'une sorte de source (très probablement une base de données SQL / noSQL ou des fichiers .csv).
  2. Analyser les données dans un format correct et raisonnable (trame de données) afin que l’on puisse effectuer des opérations et y penser.
  3. Appliquer certaines fonctions aux données (regrouper, supprimer, fusionner, renommer).
  4. Appliquer une sorte de modèle aux données (régression, regroupement, réseau de neurones ou toute autre théorie plus ou moins compliquée).
  5. Déployer / présenter vos résultats à un public plus ou moins technique.

Récupération des données

99% du temps, le processus de récupération des données revient à interroger une sorte de SQL ou base de données Impala: à la fois Python et R ont des clients ou des bibliothèques spécifiques qui font le travail en peu de temps et tout aussi bien ( RImpala, RmySQLpour R et MySQLdbpour Python fonctionne bien, pas grand chose à ajouter). Lorsqu'il s'agit de lire des fichiers .csv externes, le data.tablepackage pour R fournit la fonction freadqui lit en un rien de temps des fichiers .csv énormes et compliqués, assortis de toute option d'analyse personnalisée, et transforme le résultat directement en cadres de données avec des noms de colonne et des numéros de ligne.

Organiser les trames de données

Nous voulons que les données soient stockées dans une sorte de table afin que nous puissions accéder facilement à n'importe quelle entrée, ligne ou colonne.

Le package Rdata.table offre des moyens imbattables d'étiqueter, de renommer, de supprimer et d'accéder aux données. La syntaxe standard est très semblable à celle de SQL dt[i, j, fun_by], où cela est censé être dt[where_condition, select_column, grouped_by (or the like)]; des fonctions personnalisées définies par l'utilisateur peuvent être insérées ici ainsi que dans la jclause, de sorte que vous êtes totalement libre de manipuler les données et d'appliquer toute fonction compliquée ou fantaisiste sur des groupes ou des sous-ensembles (comme prendre la i-ème ligne, k-th élément et additionnez-le à l'élément (k-2) de la ligne (i-1) si et seulement si l'écart-type de la colonne entière est qu'est-ce-que-est, totalement groupé par la dernière colonne). Jetez un coup d’œil aux points de repère et à cette autre question incroyable sur SO. Le tri, la suppression et la modification du nom des colonnes et des lignes font ce qu’ils ont à faire. Les méthodes R vectorisées standard apply, sapply, lapply, ifelseeffectuent des opérations vectorisées sur les colonnes et les trames de données, sans faire de boucle sur chaque élément (rappelez-vous que chaque fois que vous utilisez des boucles dans R, le font très mal).

La sous-arme de Python est la pandasbibliothèque. Il fournit enfin la structure pd.DataFrame(qui manque pour une raison encore inconnue de moi en Python standard) qui traite les données pour ce qu’elles sont, à savoir des cadres de données (au lieu de certains numpy array, numpy list, numpy matrixou autre). Des opérations telles que le regroupement, la modification du nom, le tri, etc. peuvent être facilement réalisées. Dans ce cas également, l'utilisateur peut appliquer toute fonction personnalisée à un ensemble de données groupé ou à un sous-ensemble du cadre à l'aide de Python applyou lambda. Personnellement, je n'aime pas la grammaire df[df.iloc(...)]pour accéder aux entrées, mais ce n'est que du goût personnel et pas de problème du tout. Les points de repère pour les opérations de regroupement sont toujours un peu moins bons que R, data.tablemais à moins que vous ne vouliez économiser 0,02 seconde pour la compilation, les performances ne sont pas très différentes.

Les cordes

Pour traiter les chaînes, la méthode R consiste à utiliser le stringrpackage qui permet de manipuler facilement du texte, des anagrammes, des expressions rationnelles, des espaces ou des espaces vides. Il peut également être utilisé en combinaison avec des bibliothèques JSON qui décompactent les dictionnaires JSON et retirent la liste de leurs éléments, de sorte que l'on dispose d'un cadre de données final dans lequel les noms de colonne et les éléments sont ce qu'ils doivent être, sans aucun caractère non UTF8 ni espace blanc. dedans là.

Les Pandas de Python .str. font le même travail en jouant avec les expressions régulières, en traînant ou aussi bons que leurs concurrents, de sorte que même ici, il n’ya pas de grande différence de goût.

Appliquer des modèles

Voici où, à mon avis, des différences entre les deux langues apparaissent.

Ra, à ce jour, un ensemble imbattable de bibliothèques qui permettent à l'utilisateur de faire tout ce qu'il veut en une ou deux lignes de code. Les régressions fonctionnelles ou polynomiales standard sont effectuées dans des doublons et produisent des sorties dont les coefficients sont facilement lisibles, accompagnées des intervalles de confiance et des distributions de valeurs p correspondants. Il en va de même pour la classification, de même que pour les modèles de forêt aléatoires, de même que pour les dendogrammes, l'analyse en composantes principales, les décompositions en valeurs singulières, les ajustements logistiques, etc. La sortie de chacun des éléments ci-dessus est très probablement fournie avec une classe de tracé spécifique qui génère des visualisations de ce que vous venez de faire, avec des couleurs et des bulles pour les coefficients et les paramètres. Tests d'hypothèses, tests statistiques, Shapiro,

Python essaie de suivre SciPyet scikit-learn. La plupart des analyses et modèles standard sont également disponibles, mais ils sont légèrement plus longs à coder et moins intuitifs à lire (à mon avis). Des machines plus complexes manquent, bien que certaines puissent être reliées à certaines combinaisons des bibliothèques déjà existantes. Une chose que je préfère faire en Python plutôt qu'en R est l'analyse de texte avec des mots, avec des bi-grammes, des tri-grammes et des ordres plus élevés.

Présenter les résultats

Les deux langages ont de beaux outils de traçage, R ggplot2avant tout et l’équivalent Python correspondant. Ce n’est pas grand-chose à concurrencer, ils font le travail sains et saufs, bien que je pense que si vous présentez les résultats, vous devrez peut-être utiliser d’autres outils. public avec drag et gouttes rouge et vert fantaisie. R a récemment publié de nombreuses améliorations de ses shiny appfonctionnalités, qui lui permettent essentiellement de produire des sorties interactives . Je n'ai jamais voulu l'apprendre, mais je sais que c'est là et que les gens l'utilisent bien.


Note latérale

En passant, je voudrais souligner que la principale différence entre les deux langages est que Python est un langage de programmation à usage général, créé par et pour l’informatique, la portabilité, les déploiements, etc. C'est génial à ce qu'il fait et est facile à apprendre; il n'y a personne qui n'aime pas le python. Mais c'est un langage de programmation pour faire de la programmation.

Rpour sa part, a été inventé par et pour les mathématiciens, physiciens, statisticiens et informaticiens. Si vous venez de ce milieu, tout est parfaitement logique car cela reflète et reproduit parfaitement les concepts utilisés en statistique et en mathématiques. Mais si, au lieu de cela, vous avez une formation en informatique et souhaitez simuler Java ou C in R, vous allez être déçu; il n'a pas d '"objets" au sens standard (enfin, il a, mais pas ce que l'on pense généralement ...), il n'a pas de classes au sens standard (enfin, il a, mais pas ce qu'on a en général pense qu’ils sont ...), il n’a pas de "pointeurs" ni toutes les autres structures informatiques - mais juste parce qu’il n’en a pas besoin. Dernier mais pas des moindres: la documentation et les packages sont faciles à créer et à lire (si vous utilisez Rstudio); Il existe une communauté nombreuse et passionnée, et il faut littéralement cinq secondes à Google "comment faire pour insérer un problème aléatoire dans R" dont la première entrée vous redirige vers une solution au problème (effectuée par quelqu'un d'autre) avec le code correspondant , en un rien de temps.

La plupart des entreprises industrielles ont leur infrastructure construite en Python (ou dans un environnement compatible Python) qui permet une intégration aisée du code Python ( import myAnalysisn'importe où et vous avez pratiquement terminé). Cependant, toute technologie moderne, serveur ou plate-forme, exécute facilement le code d’arrière-plan sans aucun problème.

Gennaro Tedesco
la source
8
+6, c'est une très bonne réponse: détaillée, précise et équilibrée.
gung - Réintégrer Monica
+1 Meilleure réponse ici. C'est drôle, je suis venu de Java en R (bien que ce ne soit pas directement), et j'en suis devenu très attaché. Je ne pense pas nécessairement que faire des boucles dans R signifie que vous le faites mal. Je me suis retrouvé à me gratter la tête en essayant parfois de contourner l'utilisation de boucles, mais je ne pouvais pas le contourner (par exemple, créer de nouvelles valeurs de variables dans un ensemble de données en fonction des conditions des lignes précédentes et récupérer des données à partir d'ensembles de données secondaires).
Yuval Spiegler
Si seulement cette multitude de paquets R à faire quoi que ce soit au soleil a été écrite par des personnes sachant faire des calculs statistiques / écrire des logiciels de calcul numérique fiables et robustes / des analyses numériques bien connues, etc. Certains des paquets R sont très bons. Un très grand nombre de paquets R, même certains écrits par des auteurs célèbres, sont totalement inutiles - et de nombreux utilisateurs ne réalisent même pas qu’ils sont en train de le faire. Oh, c'est dans CRAN, ça doit être bon, ou au moins correct, ou fiable ... FAUX !!!!!
Mark L. Stone
"R a, à ce jour, un ensemble imbattable de bibliothèques qui permettent à l'utilisateur de faire tout ce qu'il veut en une ou deux lignes de code." Je suis d’accord à 100%, à moins que l’utilisateur obtienne la réponse correcte.
Mark L. Stone
8
@ MarkL.Stone Cela vous dérangerait-il de présenter un exemple de packages standard écrits par des utilisateurs célèbres et donnant des résultats erronés?
Gented
15
  • Python est un langage de programmation général: il est donc utile pour effectuer de nombreuses tâches en plus de l'analyse des données. Par exemple, si nous voulons automatiser l’exécution de notre modèle sur un serveur de production, python est un très bon choix. D'autres exemples incluent la connexion au matériel / capteurs pour lire des données, interagir avec des bases de données (données relationnelles ou non structurées telles que JSON), analyser des données, programmation réseau (TCP / IP), interface utilisateur graphique, interagir avec un shell, etc. pourquoi un scientifique des données voudrait-il accomplir autant de tâches de ce type, qui ont peu à voir avec des modèles prédictifs? Je pense que les gens ont des définitions différentes Qu'est-ce qu'un scientifique des données?Dans certaines organisations, l'analyse des données et l'analyse descriptive à l'aide du tableau de bord conviennent aux entreprises et les données ne sont pas suffisamment matures pour permettre la modélisation prédictive. Par ailleurs, dans de nombreuses petites entreprises, on peut s’attendre à ce que les scientifiques spécialisés dans les données fassent beaucoup de génie logiciel. Connaître python vous rendra indépendant des autres ingénieurs en logiciel.)

  • R contient beaucoup de progiciels statistiques bien meilleurs que python ou MATLAB. En utilisant R, on peut vraiment penser au niveau du modèle plutôt qu'au niveau de détail de la mise en œuvre. C'est un avantage énorme dans le développement de modèles statistiques. Par exemple, de nombreuses personnes implémentent manuellement des réseaux de neurones en python; faire ce travail peut ne pas aider à comprendre pourquoi les réseaux de neurones fonctionnent, mais simplement suivre la recette pour dupliquer le travail des autres pour vérifier si cela fonctionne. Si nous travaillons dans R, nous pouvons facilement nous concentrer sur les calculs derrière le modèle, plutôt que sur les détails de la mise en œuvre.

Dans de nombreux cas, les gens les utilisent ensemble. La création de logiciels est facile à faire en python et la construction de modèles est meilleure en R. Si nous voulons livrer un modèle en production mais pas en papier, nous pouvons avoir besoin des deux. Si votre entreprise compte beaucoup d'ingénieurs en logiciel, vous aurez peut-être besoin de plus de R. Et si votre entreprise compte beaucoup de chercheurs, vous aurez peut-être besoin de plus de python.

hxd1011
la source
2
Bonne réponse, mais vous avez écrit «Jason» au lieu de «JSON», m'a bien fait rire
Par
Je ne suis pas vraiment membre des communautés de statistiques ou "d'apprentissage automatique", mais je pense que la disponibilité de packages avancés est un peu spécifique à la communauté. Je peux croire que beaucoup de techniques statistiques nouvelles et à la pointe de la technologie viennent avec le code R. Mais quand je vois la vision par ordinateur / l'apprentissage automatique / les papiers de réseaux neuronaux qui viennent avec des codes ("de haut niveau") ... ils semblent être du matlab ou du python.
GeoMatt22
1
+1 pour discuter de l'influence des langues sur la façon de penser. Un avantage énorme de R réside dans le fait qu’il incite, pour les statisticiens, à réfléchir à la modélisation. Divulgation: Je parle couramment R, mais je ne touche qu’en Python.
Ashe
Euh ... qu'en est-il scikit-learn? scikit-learn.org/stable
navire de guerre du
10

Les programmeurs de tous horizons sous-estiment le nombre de choix culturels liés à la langue . Les développeurs Web aiment Node.js. Les scientifiques aiment Python. En tant qu’ingénieur logiciel polyglotte capable de gérer la fluidité de Javascript et la rigidité de Java, j’ai compris qu’il n’existait aucune raison intrinsèque pour que ces langages soient mauvais les uns pour les autres. etc. qui les entoure.

(Pour des raisons intrinsèques, une langue aléatoire est préférable à une autre langue, voir les commentaires à venir pour cette réponse.)

Ma prédiction personnelle est que Python est la voie de l'avenir car il peut faire tout ce que R peut - ou plutôt, assez de R que les programmeurs dédiés travaillent pour combler les lacunes - et constitue un langage de génie logiciel bien meilleur. Le génie logiciel est une discipline qui traite de:

  • faire suffisamment confiance à la fiabilité de votre code pour le mettre en production (donc tout modèle d'apprentissage automatique au service des utilisateurs en temps réel)
  • s'assurer que votre code peut continuer à fonctionner pendant sa modification et sa réutilisation (frameworks de tests unitaires, par exemple)
  • une focalisation sur la lisibilité, pour le bénéfice des autres et de vous-même en moins de 6 mois
  • un accent particulier mis sur l'organisation du code, pour faciliter la gestion des versions, revenir aux versions précédentes, et au développement simultané par plusieurs parties
  • préférer les outils et les technologies avec une meilleure documentation, et idéalement avec la propriété qu'ils ne fonctionneraient pas du tout si vous ne les utilisiez pas correctement (c'était mon plus gros problème avec Matlab - je recherche une question sur Google et je dois lire leurs forums plutôt terribles chercher une réponse)

De plus, franchement, Python est plus facile à apprendre.

Les scientifiques et les statisticiens se rendront compte qu'ils sont les acteurs d'une bonne pratique en matière d'ingénierie logicielle, et non une profession indépendante et sans gêne. Juste mon opinion, mais des papiers prouvant la fragilité du code académique vont le soutenir.

Cette réponse est tout ce que je pense - mais vous avez posé une question qui suscite beaucoup d’opinion, et comme il a été bien reçu jusqu’à présent, j’ai estimé que vous méritiez un avis sans prétention, raisonnablement informé (j'espère!). Il y a un argument sérieux en faveur de Python à propos de R dans tous les domaines et je m'en voudrais de tenter de poster une réponse non partisane lorsque la réalité peut elle-même être partisane.

Djechlin
la source
Julia, quand elle sera grande, ne serait-elle pas une meilleure alternative que Python?
kjetil b halvorsen
1
@kjetilbhalvorsen "quand il grandit" est plus un "si", il est très difficile de remplacer un langage établi, et c'est fondamentalement un choix personnel si vous voulez être sur la technologie de pointe au risque de ne jamais être fermement adoptée. OMI, Python a le vent en poupe. Je ne connais pas très bien Julia alors c'est un avis plutôt générique.
Djechlin
1
À l'exception du premier point, je ne vois pas en quoi Python est intrinsèquement supérieur sur aucun des quatre autres points.
Firebug
4
"Python peut faire tout ce que R peut" est faux. "assez de ce que R peut que des programmeurs dédiés travaillent pour combler les lacunes" , ce serait vrai pour n'importe quoi dans le monde - n'importe quoi peut être fait pour faire n'importe quoi pourvu que quelqu'un y travaille.
Gented
2
@djechlin Pas du tout. Votre exemple de fiabilité était «tout modèle d’apprentissage automatique qui sert les utilisateurs en temps réel». Python est meilleur à cet égard car il prend en charge le déploiement beaucoup plus facilement que R, et seulement cela. Les tests unitaires, la lisibilité, l'organisation et la documentation ne sont pas des qualités inhérentes. Vous pouvez implémenter vos propres tests, rendre votre code plus facile à lire, l’organiser et la documentation R est vraiment facile à comprendre.
Firebug
8

Je suis un utilisateur R mais je pense que Python est l'avenir (je ne pense pas que ce soit la syntaxe)

Python est l'avenir
L'avantage de Python est que d'autres personnes ont déjà mentionné le support beaucoup plus large et, pour les programmeurs, une syntaxe plus logique.
De plus, il est beaucoup plus simple de traduire les résultats de votre analyse en système de production.
Peut-être est-ce dû au fait que Python est à usage général et que R ne l’est pas, mais même moi, je lève les sourcils quand je vois un pipeline R produit.
Mais pas seulement cela, même pour les applications avancées, Python rattrape rapidement son retard (Scikit-learn, PyBrain, Tensorflow, etc.) et, bien que R soit toujours la lingua franca des universitaires sur la manière de mettre en œuvre des méthodes statistiques, Python a acquis une énorme notoriété dans le secteur professionnel en raison de l'avènement de bibliothèques spécialisées avancées.

Mais R n'est pas mauvais
Beaucoup de gens semblent aimer sauter dans le train "R has bad syntax".
Je souhaite proposer que la syntaxe de R soit une bonne chose!
Les fonctions d’attribution, l’évaluation paresseuse, l’évaluation non standard et les formules sont d’ énormes avantages lorsqu’on utilise R.
Cela fait gagner beaucoup de temps. regarder les noms avec names()puis assigner de nouveaux noms en ajoutant <- c("A", "B", "C").
Lorsque les utilisateurs se plaignent de la syntaxe étrange de R, ils la considèrent comme un langage de programmation et non comme un outil de science des données.
En tant que personne venant de R et aimant dplyr, je trouve la syntaxe des pandas un peu maladroite en comparaison.
Oui, c'est un peu plus flexible, mais pour la plupart des tâches, il faut plus de frappes au clavier pour exécuter une commande simple que dans R qui sont simplement là pour satisfaire l'analyseur Python, pas pour exprimer votre idée.

En résumé
Bien sûr, il est sage de connaître les deux et pendant que Python y parvient, les choix de conception spécifiques à un domaine de R simplifient tout simplement le travail ad hoc. L'énorme inconvénient de R est qu'il est difficile de quitter son domaine, ce que vous devez faire une fois que vous essayez d'appliquer vos résultats de manière durable.

Robin Gertenbach
la source
4

Si vous considérez R plus comme un outil statistique et non comme un langage de programmation, c'est vraiment génial. Il offre beaucoup plus de flexibilité que Stata ou SPSS, mais peut également faire tout ce qu'il peut. J'ai appris Stata pendant mes études et R était assez facile à regarder car j'avais déjà la perspective de l'outil statistique et non d'une expérience de langage de programmation pure que d'autres auraient pu avoir.

Je pense que la frustration avec R entre en jeu lorsque ceux qui sont programmeurs essaient d'apprendre et de comprendre R; mais c'est un excellent outil pour ceux qui viennent à R grâce à un contexte statistique.

Python est génial si vous êtes déjà un grand programmeur. mais pour moi en tant que débutant en programmation et en statistiques à peine sorti de l'université, R était un bien meilleur choix. C'est simplement la préférence de celui qui correspond le mieux à vos compétences et à vos intérêts.

JBeazer
la source
3

Ajout à certaines des réponses précédentes:

D'après mon expérience, il n'y a rien de plus facile que d'utiliser dplyr + tidyr, ggplot et Rmarkdown de R pour obtenir des données brutes en résultats présentables. Python en offre beaucoup, et je l'utilise de plus en plus, mais j'adore la façon dont les paquets de Hadley sont liés.

BStange
la source
2

Python a une large adoption en dehors de la science, alors vous bénéficiez de tout cela. Comme le souligne "Un guide en colère de R", R a été développé par une communauté, qui devait au premier ordre zéro développeur de logiciels.

Je dirais qu’aujourd’hui, R a deux atouts principaux: des progiciels hautement spécialisés très aboutis dans certains domaines et un progiciel de recherche reproductible de pointe, knitr.

Python semble être mieux adapté pour tout le reste.

Ceci est une opinion bien sûr, comme presque tout dans ce fil. Je suis un peu surpris que ce fil est toujours en vie.

Gena Kukartsev
la source
2

Comme décrit dans d'autres réponses, Python est un bon langage de programmation général, alors que R a de graves défauts en tant que langage de programmation, mais qu'il contient un ensemble plus riche de bibliothèques d'analyse de données. Ces dernières années, Python a rattrapé R avec le développement de bibliothèques d’analyse de données matures telles que scikit-learn, alors que R ne sera jamais réparé. En pratique, j'utilise Python (en fait Hy ) pour presque tout et ne me tourne vers R que pour des méthodes relativement ésotériques telles que la régression quantile (dont la mise en œuvre dans les modèles de statistiques de Python semble être interrompue). Il existe plusieurs façons d’appeler R depuis Python; PypeR en est un qui est assez simple pour que je puisse le faire fonctionner dans des environnements hostiles comme un serveur Windows.

Edit : J'encourage tous ceux qui souhaitent discuter plus avant à ce sujet à parler aux auteurs de l'essai lié au lieu de commenter cette réponse.

Kodiologue
la source
8
Ce guide est la critique la plus dénuée de sens que j'ai jamais lu à propos de R (et j'en ai lu beaucoup).
Firebug
10
"La documentation est incroyablement mauvaise", ce n'est rien. La force de R est sa simplicité pour les non-programmeurs et sa vaste documentation. "Parce que même le nom de R est stupide, il est vraiment difficile de chercher des choses utiles dans Google. Désolé, je vous en prie. Bienvenue dans R!" Je n'ai jamais rencontré de problème pour essayer de trouver de la documentation sur les paquets les plus obscurs du marché. "Vous renommez les colonnes de manière fantasmagorique, en attribuant des noms (cadre). Savez-vous comment et pourquoi cela fonctionne? Veuillez m'instruire.", Allez, il n'essaie même pas.
Firebug
8
En quoi R est-il plus difficile à google que C? Google est intelligent. Il apprend que vous êtes intéressé par le langage de programmation R. R est principalement critiqué par des personnes ayant de l'expérience dans d'autres langages de programmation. Désolé, mais cela n’a pas été développé comme alternative à ces langues. Il a été développé pour et par des statisticiens. En conséquence, certaines décisions de conception n'étaient pas optimales, mais affirmer qu'il existe de graves défauts est un peu fort. Chaque langage de programmation a ses forces et ses faiblesses.
Roland
5
Créer un paquet est en réalité très facile. Cela ne se complique que si vous respectez les règles (à juste titre) imposées par CRAN. Vous pouvez importer sélectivement à partir de packages si vous créez un package. Le recyclage de vecteurs est en réalité un atout. Il n'y a pas d'incohérences entre la liste de sous-ensembles et les vecteurs. Une partie du reste peut en effet être considérée comme un défaut.
Roland
6
R a clairement des verrues, certaines de la variété inexcusable "wat" (stringsAsFactors). Mais il possède également des bibliothèques de statistiques qui n'ont pas de parallèle, pas même à distance, dans aucune autre langue. La programmation requise pour créer ces bibliothèques est plus sérieuse que la grande majorité d’entre nous n’aura jamais à le faire. En tant que déclaration générale, "R n'est pas une langue sérieuse" se situe entre des raisins sans intelligence, désespérément religieux, analphabètes et aigres. Et je dis cela en tant que personne qui souhaite que R soit fondamentalement Python avec les bibliothèques de R.
Paul