Wie ergänzen sich R und Python in der Datenwissenschaft?

54

In vielen Tutorials oder Handbüchern scheint die Erzählung zu implizieren, dass R und Python als komplementäre Komponenten des Analyseprozesses nebeneinander existieren. Für mein ungeübtes Auge scheint es jedoch so, als ob beide Sprachen das Gleiche tun.

Meine Frage ist also, ob es wirklich spezialisierte Nischen für die beiden Sprachen gibt oder ob es nur eine persönliche Präferenz ist, die eine oder die andere zu verwenden?

BioHazZzZard
quelle
2
Das sieht wirklich nicht wie ein Duplikat dieses Threads aus. Hier geht es nicht darum, wie man mit Python Statistiken erstellt, sondern darum, wie Python R ergänzen kann (offensichtlich würde R für die statistischen Analysen verwendet werden).
gung - Wiedereinsetzung von Monica
4
R Wenn Sie vor 10 Jahren Statistiker waren. Python, wenn Sie Ihren Code irgendwo in Produktion bringen oder wiederverwenden möchten.
Djechlin
1
Siehe auch
Juho Kokkala
3
Aufgrund der Popularität dieses Q. & als Antwort auf Anfragen durch Flags habe ich es wieder geöffnet, aber es in den CW-Modus versetzt.
Scortchi
1
Die meisten Antworten vergessen, dass sie die Sprache Python mit der Implementierung GNU-R vergleichen. R hat auch andere Implementierungen (siehe Renjin , geschrieben in Java, Microsoft R Open , das mit Intel MKL, FastR , pqR usw. kompiliert ist). Diese versuchen, einige Probleme mit GNU-R, einer viel konservativeren Implementierung, zu beheben. Denken Sie auch daran, dass R keine formale Definition hat.
Firebug

Antworten:

45

Sie ergänzen sich. Es stimmt , dass beide können die gleichen Dinge tun, aber dies kann von den meisten Sprachen gesagt werden. Jeder hat seine Stärken und Schwächen. Die allgemeine Ansicht scheint zu sein, dass Python am besten für die Datenerfassung und -aufbereitung sowie für die Textanalyse geeignet ist. R wird für die Datenanalyse als das Beste angesehen, da es in erster Linie eine statistische Sprache ist.

R hat eine Fülle von Paketen für alles, was Sie sich vorstellen können, aber das Wichtigste ist die statistische Analyse - von der einfachen Chi-Quadrat-Analyse über die Faktoranalyse bis hin zu den Gefährdungsmodellen ist es einfach und robust. Einige der größten Namen in der Statistik erstellen R-Pakete, und es gibt eine lebhafte Community, die Ihnen bei jedem Bedarf hilft. ggplot2ist ein Standard in der Datenvisualisierung (Grafiken etc ..). R ist eine vektorisierte Sprache, die zum effizienten Durchlaufen von Daten entwickelt wurde. Es speichert auch alle Daten im RAM, einem zweischneidigen Schwert - es ist bissig bei kleineren Datenmengen (obwohl manche mit mir streiten), aber es kann nicht gut mit großen Datenmengen umgehen (obwohl es Pakete hat, um dies zu umgehen , wie ff).

Python ist wesentlich einfacher zu erlernen als R - insbesondere für diejenigen, die bereits Programmiererfahrung haben. R ist nur ... komisch. Python eignet sich hervorragend zum Abrufen von Daten und ist die Sprache, die für das Web-Scraping (mit dem Erstaunlichen beautifulsoup) verwendet wird. Python ist bekannt für seine Stärke beim Parsen von Zeichenfolgen und bei der Textbearbeitung. pandasist eine großartige Bibliothek zum Manipulieren, Zusammenführen, Transformieren usw. von Daten und ist schnell (und wahrscheinlich von R inspiriert).

Python ist großartig, wenn Sie etwas programmieren müssen. Dies ist nicht überraschend, da es sich um eine Allzwecksprache handelt. R wurde jedoch mit all seinen Erweiterungen von Statistikern für Statistiker gebaut. Während Python bei vielen Anwendungen einfacher und besser und schneller ist, ist R die ideale Plattform für statistische Analysen.

Yuval Spiegler
quelle
13
Als jemand, der beides kennt, stimme ich dem zu; Es mag viele stilistische Argumente geben, aber der größte Unterschied ist, dass Python unterentwickelt ist, sobald es an der Zeit ist, kausale statistische Modelle auszuführen. Das statsmodels- Paket bietet Ihnen einige Grundlagen, nähert sich jedoch nicht R, Stata oder Sas. Eine bemerkenswerte Ausnahme ist die Analyse des maschinellen Lernstils, für die Pythons Scikitlearn gut passt. Für alles andere kann man meiner Meinung nach gut argumentieren, dass Python mindestens R entspricht und oft überlegen ist. Beides zu lernen ist keineswegs eine schlechte Zeitnutzung.
Jeff
2
Ich stimme den meisten dieser Aussagen zu, möchte jedoch die Themen stärker hervorheben. R ist nicht gut für große Datenmengen und kann mit spärlichen Datenmengen nicht umgehen (die meisten Bibliotheken unterstützen dies nicht). B. Modelle vom Typ "Wortsack", bei denen die Kardinalität eines Faktors / einer kategorialen Variablen möglicherweise in den 1000ern liegt.
Seanv507
10
Um kein Argument in einem Kommentarthread zu beginnen, ist das data.tablePaket in R speziell für die effiziente Arbeit mit großen Datenmengen und für die verteilte Verarbeitung gedacht.
Bright-Star
3
Wenn Sie der Meinung sind, dass Python beim Abrufen von Daten und beim Parsen von Zeichenfolgen besser als R ist, haben Sie R die ganze Zeit sehr falsch verwendet. Gleiches gilt für "R ist nicht gut für große Datenmengen und kann mit spärlichen Datenmengen nicht gut umgehen (die meisten Bibliotheken unterstützen dies nicht)" .
Gented
3
Hinzufügen zu Trevors Boost von data.table; Ich freue mich auch sagen zu können, dass rvestes ein AUSGEZEICHNETES Tool für die meisten Schabeaufgaben ist und viel einfacher in Betrieb zu nehmen ist alsbeautifulsoup
MichaelChirico,
21

Ich werde versuchen, eine Antwort zu formulieren, die die Hauptpunkte berührt, in denen die beiden Sprachen für Data Science / Statistik / Datenanalyse und dergleichen ins Spiel kommen, als jemand, der beide verwendet.

Der Workflow in der Datenanalyse besteht in der Regel aus folgenden Schritten:

  1. Abrufen der Daten aus einer Quelle (höchstwahrscheinlich aus einer SQL / noSQL-Datenbank oder CSV-Dateien).
  2. Analysieren Sie die Daten in einem anständigen und vernünftigen Format (Datenrahmen), damit Sie Operationen ausführen und darüber nachdenken können.
  3. Anwenden einiger Funktionen auf die Daten (Gruppieren, Löschen, Zusammenführen, Umbenennen).
  4. Anwenden eines Modells auf die Daten (Regression, Clustering, ein neuronales Netzwerk oder eine andere mehr oder weniger komplizierte Theorie).
  5. Bereitstellen / Präsentieren Ihrer Ergebnisse für ein mehr oder weniger technisches Publikum.

Daten abrufen

99% der Zeit, der Prozess die Daten des Abrufens geht um eine Art von SQL oder Impala Datenbank abfragt: beiden Pythons und R haben bestimmte Clients oder Bibliotheken, die die Arbeit in kürzester Zeit zu tun und gleich gut ( RImpala, RmySQLfür R und MySQLdbfür Python reibungslos arbeiten, nicht wirklich viel hinzuzufügen). Wenn es um das Lesen externer CSV-Dateien geht, bietet das data.tablePaket für R die Funktion fread, mit der riesige und komplizierte CSV-Dateien mit jeder benutzerdefinierten Analyseoption in kürzester Zeit eingelesen und das Ergebnis direkt in Datenrahmen mit Spaltennamen und Zeilennummern umgewandelt werden kann.

Datenrahmen organisieren

Wir möchten, dass die Daten in einer Art Tabelle gespeichert werden, damit wir problemlos auf jeden einzelnen Eintrag, jede einzelne Zeile oder Spalte zugreifen können.

Das R- Paket data.tablebietet unschlagbare Möglichkeiten zum Beschriften, Umbenennen, Löschen und Zugreifen auf die Daten. Die Standardsyntax ist sehr ähnlich wie bei SQL dt[i, j, fun_by], wo dies beabsichtigt ist dt[where_condition, select_column, grouped_by (or the like)]. Benutzerdefinierte Funktionen können sowohl dort als auch in der jKlausel eingefügt werden, so dass Sie völlig frei sind, die Daten zu manipulieren und komplizierte oder ausgefallene Funktionen auf Gruppen oder Teilmengen anzuwenden (z. B. die i-te Zeile, k-te) Element und summiere es zu dem (k-2) -ten Element der (i-1) -ten Zeile, wenn die Standardabweichung der gesamten Spalte so ist, wie sie ist (gruppiert nach der letzten Spalte insgesamt). Schauen Sie sich die Benchmarks und diese andere erstaunliche Frage zu SO an. Das Sortieren, Löschen und Umbenennen von Spalten und Zeilen erledigt alles, was sie tun müssen, und die standardmäßigen vektorisierten R-Methoden apply, sapply, lapply, ifelseführen vektorisierte Operationen für Spalten und Datenrahmen aus, ohne jedes Element zu durchlaufen (denken Sie daran, wann immer Sie Schleifen in R you verwenden) falsch machen).

Pythons Gegenwaffe ist die pandasBibliothek. Es liefert schließlich die Struktur pd.DataFrame(die Python aus irgendeinem mir noch unbekannten Grund fehlt), die die Daten so behandelt, wie sie sind, nämlich Datenrahmen (anstelle von einigen numpy array, numpy list, numpy matrixoder was auch immer). Vorgänge wie Gruppieren, Umbenennen, Sortieren und dergleichen können problemlos ausgeführt werden, und auch hier kann der Benutzer mithilfe von Python applyoder eine beliebige benutzerdefinierte Funktion auf einen gruppierten Datensatz oder eine Teilmenge des Frames anwenden lambda. Ich persönlich mag es nicht df[df.iloc(...)], wenn die Grammatik auf die Einträge zugreift, aber das ist nur persönlicher Geschmack und überhaupt kein Problem. Die Benchmarks für Gruppierungsvorgänge sind immer noch etwas schlechter als R, data.tableaber wenn Sie nicht 0,02 Sekunden für die Kompilierung einsparen möchten, gibt es keinen großen Leistungsunterschied.

Streicher

Die R- Methode zum Behandeln von Zeichenfolgen besteht darin, das stringrPaket zu verwenden, das mühelos beliebige Textmanipulationen, Anagramme, reguläre Ausdrücke, nachgestellte Leerzeichen oder ähnliches ermöglicht. Es kann auch in Kombination mit JSON-Bibliotheken verwendet werden, die JSON-Wörterbücher entpacken und deren Elemente aus der Liste entfernen, sodass ein endgültiger Datenrahmen ohne Nicht-UTF8-Zeichen oder Leerzeichen zur Verfügung steht, in dem die Spaltennamen und die Elemente den Anforderungen entsprechen da drin.

Pythons Pandas .str. spielen genauso gut mit regulären Ausdrücken wie ihre Konkurrenten, auch hier gibt es keinen großen Unterschied im Geschmack.

Modelle anwenden

Hier ergeben sich meiner Meinung nach Unterschiede zwischen den beiden Sprachen.

Rverfügt seit heute über eine unschlagbare Reihe von Bibliotheken, mit denen der Benutzer im Wesentlichen in ein bis zwei Codezeilen alles tun kann, was er will. Standardmäßige funktionale oder polynomielle Regressionen werden in Einzeilen ausgeführt und erzeugen Ausgaben, deren Koeffizienten leicht lesbar sind, begleitet von ihren entsprechenden Konfidenzintervallen und p-Werteverteilungen. Ebenso für Clustering, ebenso für zufällige Waldmodelle, ebenso für Dendogramme, Hauptkomponentenanalyse, Singulärwertzerlegungen, logistische Anpassungen und vieles mehr. Die Ausgabe für jede der oben genannten Optionen wird höchstwahrscheinlich mit einer bestimmten Plotklasse geliefert, die Visualisierungen der gerade ausgeführten Aktionen mit Farben und Blasen für Koeffizienten und Parameter generiert. Hypothesentests, statistische Tests, Shapiro,

Python versucht mit SciPyund Schritt zu halten scikit-learn. Die meisten Standardanalysen und -modelle sind ebenfalls verfügbar, aber für Code etwas länger und für das Lesen weniger intuitiv (meiner Meinung nach). Es fehlen kompliziertere Maschinen, obwohl einige auf einige Kombinationen der bereits vorhandenen Bibliotheken zurückzuführen sind. Eine Sache, die ich lieber in Python als in R mache, ist die Bag-of-Word-Textanalyse mit Bi-Gramm, Tri-Gramm und höheren Ordnungen.

Präsentation der Ergebnisse

Beide Sprachen haben schöne Zeichenwerkzeuge, ggplot2vor allem R und das entsprechende Python-Äquivalent. Es gibt nicht viel zu konkurrieren, aber sie erledigen ihre Arbeit sicher, obwohl ich der Meinung bin, dass Sie, wenn Sie die Ergebnisse präsentieren , andere Tools verwenden müssen - es gibt ausgefallene farbenfrohe Design-Tools, und weder Python noch R sollen das überraschen Publikum mit schickem rot-grünem Drag & Drop. R hat in letzter Zeit eine Reihe von Verbesserungen an seinen shiny appFunktionen veröffentlicht, die es ihm grundsätzlich ermöglichen, interaktive Ausgaben zu erstellen . Ich wollte es nie lernen, aber ich weiß, dass es da ist und die Leute es gut gebrauchen.


Randnotiz

Als Randnotiz möchte ich betonen, dass der Hauptunterschied zwischen den beiden Sprachen darin besteht, dass Python eine Allzweck-Programmiersprache ist, die von und für Informatik, Portabilität, Bereitstellungen usw. erstellt wurde. Es ist großartig, was es macht und es ist einfach zu lernen; Es gibt niemanden, der Python nicht mag. Aber es ist eine Programmiersprache, um zu programmieren.

Rwurde von und für Mathematiker, Physiker, Statistiker und Datenwissenschaftler erfunden. Wenn Sie aus diesem Hintergrund kommen, ist alles sinnvoll, da es die in Statistik und Mathematik verwendeten Konzepte perfekt widerspiegelt und reproduziert. Aber wenn Sie stattdessen aus der Informatik kommen und Java oder C in R simulieren möchten, werden Sie enttäuscht sein. Es gibt keine "Objekte" im Standard-Sinne (na ja, es gibt, aber nicht das, was man normalerweise für sie hält ...), es gibt keine Klassen im Standard-Sinne (na ja, es gibt, aber nicht das, was man normalerweise hält) denkt sie sind ...), es hat keine "Zeiger" oder alle anderen Informatikstrukturen - aber nur, weil es sie nicht braucht. Last but not least: Dokumentation und Pakete sind einfach zu erstellen und zu lesen (wenn Sie Rstudio verwenden); Es gibt eine große und leidenschaftliche Community, und es dauert buchstäblich fünf Sekunden, bis Google weiß, wie man ein zufälliges Problem in R einfügt. Der erste Eintrag leitet Sie zu einer Lösung des Problems (von jemand anderem) mit entsprechendem Code weiter in kürzester Zeit.

Die Infrastruktur der meisten Industrieunternehmen ist in Python (oder einer pythonfreundlichen Umgebung) integriert, mit der Python-Code problemlos integriert werden kann (praktisch import myAnalysisüberall, und Sie sind fertig). Auf jeder modernen Technologie, jedem Server oder jeder Plattform kann jedoch problemlos Hintergrund-R-Code ausgeführt werden.

Gennaro Tedesco
quelle
8
+6, das ist eine sehr gute Antwort: detailliert, genau und ausgewogen.
gung - Reinstate Monica
+1 Beste Antwort hier. Es ist lustig, dass ich von Java zu R gekommen bin (wenn auch nicht direkt), und ich habe es ziemlich gemocht. Ich denke nicht unbedingt, dass Schleifen in R bedeuten, dass Sie es falsch machen. Ich habe mir beim Umgehen von Schleifen den Kopf zerkratzt, konnte aber keinen Weg finden, um das Problem zu umgehen (z. B. neue Variablenwerte in einem Datensatz basierend auf den Bedingungen vorheriger Zeilen zu erstellen und Daten aus sekundären Datensätzen abzurufen).
Yuval Spiegler
Wenn nur diese Fülle von R-Paketen von Leuten geschrieben worden wäre, die wissen, wie man statistische Berechnungen durchführt, zuverlässige und robuste numerische mathematische Software schreibt, numerische Analysen kennt usw. Einige der R-Pakete sind sehr gut. Eine sehr große Anzahl von R-Paketen, selbst einige von berühmten Autoren, sind totaler Müll - und viele Benutzer bemerken nicht einmal, dass sie Müll bekommen. Oh, es ist in CRAN, es muss gut oder zumindest richtig oder zuverlässig sein ... FALSCH !!!!!
Mark L. Stone
"R verfügt ab heute über eine unschlagbare Reihe von Bibliotheken, mit denen der Benutzer im Wesentlichen alles in ein bis zwei Codezeilen tun kann, was er will." Ich stimme zu 100% zu, es sei denn, der Benutzer möchte die richtige Antwort erhalten.
Mark L. Stone
8
@ MarkL.Stone Würde es Ihnen etwas ausmachen, ein Beispiel für Standardpakete zu präsentieren, die von berühmten Benutzern geschrieben wurden und falsche Ergebnisse liefern?
Gented
15
  • Python ist eine allgemeine Programmiersprache. Daher eignet es sich neben der Datenanalyse auch für viele andere Aufgaben. Wenn wir beispielsweise die Modellausführung im Produktionsserver automatisieren möchten, ist Python eine wirklich gute Wahl. Andere Beispiele sind die Verbindung mit Hardware / Sensoren zum Lesen von Daten, die Interaktion mit Datenbanken (relationale oder nicht strukturierte Daten wie JSON), das Parsen von Daten, die Netzwerkprogrammierung (TCP / IP), die grafische Benutzeroberfläche, die Interaktion mit der Shell usw. (Nun, Warum möchte ein Datenwissenschaftler so viele dieser Aufgaben ausführen, die wenig mit Vorhersagemodellen zu tun haben? Ich denke, die Menschen haben unterschiedliche Definitionen. Was ist ein Datenwissenschaftler?In einigen Organisationen ist das Parsen der Daten und das Durchführen der deskriptiven Analyse mit dem Dashboard für das Geschäft ausreichend und die Daten sind nicht ausgereift genug, um Vorhersagemodelle zu erstellen. Auf der anderen Seite kann man in vielen kleinen Unternehmen erwarten, dass Datenwissenschaftler viel Software-Engineering betreiben. Wenn Sie Python kennen, sind Sie von anderen Software-Ingenieuren unabhängig.)

  • R hat eine Menge statistischer Pakete, die viel besser sind als Python oder MATLAB. Durch die Verwendung von R kann man wirklich auf Modellebene statt auf Implementierungsdetailebene denken. Dies ist ein großer Vorteil bei der Entwicklung statistischer Modelle. Beispielsweise implementieren viele Menschen neuronale Netze manuell in Python. Wenn Sie solche Arbeiten ausführen, verstehen Sie möglicherweise nicht, warum neuronale Netze funktionieren. Befolgen Sie jedoch einfach das Rezept, um die Arbeit anderer zu duplizieren und zu überprüfen, ob sie funktioniert. Wenn wir in R arbeiten, können wir uns leicht auf die Mathematik hinter dem Modell konzentrieren, anstatt auf Implementierungsdetails.

In vielen Fällen benutzen die Leute sie zusammen. Das Erstellen von Software ist in Python einfach und das Erstellen von Modellen in R besser. Wenn wir ein Modell in der Produktion liefern möchten, aber kein Papier, benötigen wir möglicherweise beides. Wenn in Ihrem Unternehmen viele Softwareentwickler beschäftigt sind, benötigen Sie möglicherweise mehr R. Wenn in Ihrem Unternehmen viele Forscher beschäftigt sind, benötigen Sie möglicherweise mehr Python.

hxd1011
quelle
2
Gute Antwort, aber Sie haben "Jason" anstelle von "JSON" geschrieben und mir ein gutes Lachen verschafft
Par
Ich bin weder Mitglied der Statistik- noch der Community für "maschinelles Lernen", aber ich denke, dass die Verfügbarkeit von erweiterten Paketen etwas spezifisch für die Community ist. Ich kann glauben, dass viele neue und hochmoderne statistische Techniken mit R-Code ausgestattet sind. Aber wenn ich Computer Vision / Maschinelles Lernen / Neuronale Netze sehe, die mit ("High-Level" -) Codes geliefert werden, dann scheinen sie Matlab oder Python zu sein.
GeoMatt22
1
+1 um zu diskutieren, wie die Sprachen das Denken beeinflussen. Ein enormer Vorteil von R ist, dass es, weil es von Statistikern für Statistiker erstellt wurde, das Denken in Bezug auf die Modellierung fördert. Disclosure: Ich spreche fließend R, aber nur Python.
Ashe
Ähm ... was ist mit scikit-learn? scikit-learn.org/stable
warship
10

Programmierer aller Klassen unterschätzen, wie viel Sprachauswahl kulturell ist . Webentwickler wie Node.js. Wissenschaftler wie Python. Als polygloter Softwareentwickler, der mit der Fließfähigkeit von Javascript und der Starrheit von Java trotzdem umgehen kann, habe ich festgestellt, dass es keinen eigentlichen Grund gibt, warum diese Sprachen für die Arbeit des anderen schlecht sind - nur die enorme Menge an Paketen, Dokumentationen, Communities, Büchern, usw. um sie herum.

(Aus intrinsischen Gründen ist eine zufällige Sprache besser als eine andere Sprache, siehe die bevorstehenden Kommentare zu dieser Antwort.)

Meine persönliche Vorhersage ist, dass Python der Weg der Zukunft ist, weil es alles kann, was R kann - oder vielmehr genug von dem, was engagierte Programmierer tun, um die Lücken zu füllen - und eine weitaus bessere Software-Engineering-Sprache ist. Software Engineering ist eine Disziplin, die sich mit Folgendem befasst:

  • Vertrauen in die Zuverlässigkeit Ihres Codes, um ihn in die Produktion zu integrieren (also in jedes maschinelle Lernmodell, das Benutzern in Echtzeit zur Verfügung steht)
  • Sicherstellen, dass Ihr Code weiterhin funktioniert, während er geändert und wiederverwendet wird (z. B. Unit-Testing-Frameworks)
  • Der Fokus liegt auf der Lesbarkeit zum Wohle anderer und Ihrer selbst in nur 6 Monaten
  • Ein Schwerpunkt liegt auf der Code-Organisation, um die Versionierung zu vereinfachen, auf frühere Arbeitsversionen zurückzugreifen und die Entwicklung durch mehrere Parteien gleichzeitig zu ermöglichen
  • Ich bevorzuge Tools und Technologien mit besserer Dokumentation und im Idealfall mit der Eigenschaft, dass sie erst dann funktionieren, wenn Sie sie richtig verwenden (dies war mein größter Kritikpunkt bei Matlab - ich google eine Frage und muss ihre ziemlich schrecklichen Foren durchlesen nach einer Antwort suchen)

Ehrlich gesagt ist Python leichter zu lernen.

Wissenschaftler und Statistiker werden erkennen, dass sie Stakeholder einer guten Softwareentwicklungspraxis sind, nicht eines unabhängigen und ungestörten Berufs. Nur meine Meinung, aber Papiere, die die Sprödigkeit des akademischen Codes belegen, werden dies unterstützen.

Diese Antwort ist meine ganze Meinung - aber Sie haben eine sehr begründete Frage gestellt, und da sie bisher gut aufgenommen wurde, hatte ich das Gefühl, dass Sie eine unprätentiöse, vernünftig informierte (ich hoffe!) Stellungnahme als Antwort verdient haben. Es gibt ein ernstes Argument für Python über R auf der ganzen Linie und ich würde nicht versuchen, eine unparteiische Antwort zu posten, wenn die Realität selbst parteiisch sein könnte.

djechlin
quelle
Wäre Julia, wenn sie erwachsen wird, nicht eine bessere Alternative als Python?
kjetil b halvorsen
1
@kjetilbhalvorsen "wenn es erwachsen wird" ist eher ein "wenn", es ist sehr schwer, eine etablierte Sprache zu verdrängen, und es ist im Grunde eine persönliche Entscheidung, ob Sie auf der Frontier-Technologie sein wollen, auf der Gefahr, dass sie niemals fest etabliert wird. IMO, Python hat jetzt den Schwung. Ich kenne Julia allerdings nicht sehr gut, daher ist dies eine ziemlich allgemeine Meinung.
Djechlin
1
Mit Ausnahme der ersten Kugel kann ich nicht erkennen, wie überlegen Python in den anderen vier Punkten ist.
Firebug
4
"Python kann alles, was R kann" ist falsch. "Genug von dem, was die engagierten Programmierer können, um die Lücken zu füllen" , das wäre für alles auf der Welt wahr - alles kann gemacht werden, um irgendetwas zu tun, solange jemand daran arbeitet.
Gented
2
@djechlin Ganz und gar nicht. Ihr Beispiel für Zuverlässigkeit war "also jedes maschinelle Lernmodell, das Benutzern in Echtzeit dient". Python kann das besser, weil es die Bereitstellung viel einfacher unterstützt als R und nur das. Unit-Tests, Lesbarkeit, Organisation und Dokumentation sind keine inhärenten Eigenschaften. Sie können Ihre eigenen Tests implementieren, Ihren Code einfacher lesen, organisieren und die R-Dokumentation ist wirklich einfach zu verstehen.
Firebug
8

Ich bin ein R-Benutzer, aber ich denke, Python ist die Zukunft (ich glaube nicht, dass es die Syntax ist)

Python ist die Zukunft
Der Vorteil von Python liegt darin, dass andere bereits die viel umfassendere Unterstützung und für Programmierer eine logischere Syntax erwähnt haben.
Auch die Fähigkeit, Ergebnisse aus Ihrer Analyse in ein Produktionssystem zu übersetzen, ist viel einfacher.
Vielleicht liegt es daran, dass Python ein universeller Zweck ist und R nicht, aber selbst ich hebe die Augenbrauen, wenn ich eine produzierte R-Pipeline sehe.
Aber nicht nur das, auch für fortgeschrittene Anwendungen holt Python schnell auf (Scikit-Learn, PyBrain, Tensorflow usw.), und während R immer noch die Verkehrssprache in der Wissenschaft ist, wie statistische Methoden implementiert werden können, hat Python aufgrund dessen im professionellen Bereich eine enorme Bedeutung erlangt das Aufkommen fortgeschrittener Fachbibliotheken.

Aber R ist nicht schlecht
Viele Leute scheinen auf den Zug "R hat schlechte Syntax" zu springen.
Ich möchte vorschlagen, dass die Syntax von R eine gute Sache ist!
Zuweisungsfunktionen, verzögerte Auswertung, nicht standardmäßige Auswertung und Formeln sind enorme Vorteile bei der Verwendung von R.
Es spart so viel Zeit, sich keine Gedanken über das Entkommen von Variablennamen machen zu müssen, auf die in Ihrer Zusammenfassung verwiesen wird, oder darüber, wie die Logik erstellt wird, was gegen was oder modelliert wird Namen mit names()ansehen und dann durch Hinzufügen neue Namen vergeben <- c("A", "B", "C").
Wenn sich Leute über Rs seltsame Syntax beschweren, betrachten sie sie als Programmiersprache, nicht als datenwissenschaftliches Werkzeug.
Als jemand, der aus R kommt und Dplyr liebt, finde ich die Syntax von Pandas im Vergleich etwas ungeschickt.
Ja, es ist etwas flexibler, aber für die meisten Aufgaben müssen Sie viel mehr Tastenanschläge ausführen als in R, nur um Pythons Parser zu befriedigen und nicht um Ihre Idee auszudrücken.

Fazit
Natürlich ist es ratsam, beides zu wissen, und während Python dorthin kommt, vereinfachen die domänenspezifischen Designoptionen von R die Ad-hoc-Arbeit. Der große Nachteil von R ist, dass es schwierig ist, seine Domäne zu verlassen, was Sie im Grunde tun müssen, wenn Sie versuchen, Ihre Ergebnisse auf nachhaltige Weise umzusetzen.

Robin Gertenbach
quelle
4

Wenn Sie R eher als statistisches Werkzeug und nicht als Programmiersprache betrachten, ist es wirklich großartig. Es ist weitaus flexibler als Stata oder SPSS, kann aber auch alles, was sie können. Ich habe Stata während des Studiums gelernt, und R war leicht zu betrachten, da ich bereits die Perspektive des statistischen Tools hatte und keine reine Programmierspracherfahrung, die andere haben könnten.

Ich denke, Frustration über R kommt ins Spiel, wenn diejenigen, die Programmierer sind, versuchen, R zu lernen und zu verstehen. Aber es ist ein großartiges Werkzeug für diejenigen, die aus statistischen Gründen zu R kommen.

Python ist großartig, wenn Sie bereits ein großartiger Programmierer sind. Aber für mich als Anfänger in Programmierung und Statistik war R eine viel bessere Wahl. Es ist wirklich nur eine Vorliebe, welche mehr zu Ihren Fähigkeiten und Interessen passt.

JBeazer
quelle
3

Hinzufügen zu einigen der vorherigen Antworten:

Nach meiner Erfahrung gibt es nichts Einfacheres, als Rs dplyr + tidyr, ggplot und Rmarkdown zu verwenden, um von Rohdaten zu präsentierbaren Ergebnissen zu gelangen. Python bietet eine Menge und ich benutze es immer mehr, aber ich mag die Art und Weise, wie Hadleys Pakete zusammenpassen.

BStange
quelle
2

Python hat eine breite Akzeptanz außerhalb der Wissenschaft, sodass Sie von all dem profitieren. Wie "Ein wütender Leitfaden für R" hervorhebt, wurde R von einer Community entwickelt, die in erster Linie keine Softwareentwickler hatte.

Ich würde sagen, dass R heute zwei Hauptstärken hat: einige wirklich ausgereifte hochspezialisierte Pakete in einigen Bereichen und hochmoderne, reproduzierbare Forschungspakete.

Python scheint für alles andere besser geeignet zu sein.

Das ist natürlich eine Meinung, wie fast alles in diesem Thread. Ich bin ein bisschen erstaunt, dass dieser Thread noch lebt.

Gena Kukartsev
quelle
2

Wie in anderen Antworten beschrieben, ist Python eine gute Programmiersprache für allgemeine Zwecke, wohingegen R als Programmiersprache schwerwiegende Mängel aufweist, aber eine größere Anzahl von Datenanalysebibliotheken enthält. In den letzten Jahren hat Python mit der Entwicklung ausgereifter Datenanalysebibliotheken wie Scikit-Learn R eingeholt, während R niemals repariert werden wird. In der Praxis verwende ich Python (eigentlich Hy ) für fast alles und wende mich nur für relativ esoterische Methoden wie die Quantil-Regression (deren Implementierung in Pythons Statistikmodellen nicht funktioniert) an R. Es gibt verschiedene Möglichkeiten, R von Python aus aufzurufen. PypeR ist so einfach, dass ich es in so feindlichen Umgebungen wie einem Windows-Server einsetzen kann.

Edit : Ich ermutige jeden, der sich darüber weiter streiten möchte, mit den Autoren des verlinkten Aufsatzes zu sprechen, anstatt diese Antwort zu kommentieren.

Kodiologist
quelle
8
Dieser aRrgh-Leitfaden ist die ahnungsloseste Kritik, die ich je über R gelesen habe (und ich habe viele gelesen).
Firebug
10
"Die Dokumentation ist absolut schlecht", das ist ahnungslos. R Stärke ist seine Einfachheit für Nicht-Programmierer und seine umfangreiche Dokumentation. "Da sogar Rs Name dumm ist, ist es wirklich schwierig, R-Dinge auf nützliche Weise zu googeln. Tut mir leid. Willkommen bei R!", Das ist ahnungslos. Ich bin nie auf ein Problem gestoßen, als ich versuchte, Dokumentation für die dunkelsten Pakete zu finden. "Du benennst Spalten um, indem du sie gruselig in Namen (Rahmen) umlegst. Weißt du, wie und warum das funktioniert? Bitte erzieh mich."
Firebug
8
Wie ist R schwerer zu googeln als C? Google ist schlau. Es erfährt, dass Sie sich für die Programmiersprache R interessieren. R wird meist von Personen mit einem Hintergrund aus anderen Programmiersprachen kritisiert. Entschuldigung, aber es wurde nicht als Alternative zu diesen Sprachen entwickelt. Es wurde für und von Statistikern entwickelt. Infolgedessen waren einige Entwurfsentscheidungen nicht optimal, aber die Aussage, dass es schwerwiegende Mängel gibt, ist ein bisschen stark. Jede Programmiersprache hat ihre Stärken und Schwächen.
Roland
5
Das Erstellen eines Pakets ist eigentlich sehr einfach. Es wird nur dann kompliziert, wenn Sie die von CRAN (zu Recht) durchgesetzten Regeln einhalten. Sie können selektiv aus Paketen importieren, wenn Sie ein Paket erstellen. Vektorrecycling ist eigentlich eine Stärke. Es gibt keine Inkonsistenzen zwischen Untergruppenliste und Vektoren. Einige der übrigen können in der Tat als Mängel angesehen werden.
Roland
6
R hat eindeutig Warzen, einige der unentschuldbaren "wat" -Varianten (stringsAsFactors). Aber es gibt auch statistische Bibliotheken, die keine Parallele haben, auch nicht aus der Ferne, in einer anderen Sprache. Die Programmierung, die zum Erstellen dieser Bibliotheken erforderlich ist, ist schwerwiegender, als es die große Mehrheit von uns jemals tun wird. Als pauschale Aussage ist "R ist keine ernsthafte Sprache" irgendwo zwischen ahnungslosen, hoffnungslos parochialen, Analphabeten und sauren Trauben. Und ich sage dies als jemand, der wünscht, R wäre im Grunde Python mit Rs Bibliotheken.
Paul