57 votos

¿Cómo R y Python se complementan en los datos de la ciencia?

En muchos tutoriales o manuales de la narrativa parece implicar que R y python coexistir como componentes complementarios de análisis de proceso. A mis ojos inexpertos, sin embargo, parece que los dos idiomas de ordenación de hacer la misma cosa.

Así que mi pregunta es si hay realmente nichos especializados para los dos idiomas o si es sólo una preferencia personal, ya sea para utilizar uno o el otro?

45voto

Yuval Sp Puntos 316

Son complementarios. Es cierto que ambos pueden hacer las mismas cosas, sin embargo, esto también puede decirse de la mayoría de los idiomas. Cada uno tiene sus fortalezas y debilidades. La opinión común es que parece ser que Python es mejor para la recolección de datos y preparación, así como para el análisis textual. R se considera mejor para el análisis de los datos, ya que es un lenguaje estadístico en primer lugar.

R tiene una gran variedad de paquetes para cualquier cosa que usted puede pensar, pero su base es el análisis estadístico de chi-cuadrado para el análisis de los factores y modelos de riesgo, es fácil y robusto. Algunos de los nombres más grandes en las estadísticas de crear paquetes de R, y tiene una animada comunidad para ayudar con todas sus necesidades. ggplot2 es un estándar de visualización de datos (gráficos, etc..). R es un vectorizados idioma y construido para el bucle a través de los datos de forma eficiente. También almacena todos los datos en la RAM, que es una espada de doble filo - es ágil en conjuntos de datos más pequeños (aunque algunos podrían argumentar conmigo), pero no puede manejar grandes volúmenes de datos bien (aunque tiene paquetes para la derivación de esto, como por ejemplo ff).

Python es considerablemente más fácil de aprender que el R - especialmente para aquellos que tienen previa experiencia en programación. R es justo... raro. Python es excelente para la recuperación de datos, y es el lenguaje que se utiliza para web scraping (con la increíble beautifulsoup). Python es conocido por su fuerza en la cadena de análisis y manipulación de texto. pandas es una gran biblioteca para la manipulación de datos, la fusión, transformación, etc., y es rápido (y probablemente inspirado por R).

Python es genial cuando tienes que hacer algo de programación. Esto no es sorprendente, ya que es un idioma de propósito general. R, sin embargo, con todas sus extensiones, fue construido por los estadísticos para los estadísticos. Así, mientras que Python puede ser más fácil y mejor y más rápido en muchas aplicaciones, R sería la plataforma para el análisis estadístico.

22voto

Gennaro Tedesco Puntos 123

Voy a tratar de formular una respuesta tocar los puntos principales donde las dos lenguas entran en juego para la ciencia de datos / estadísticas / análisis de datos y similares, como alguien que utiliza tanto.

El flujo de trabajo en el análisis de datos en general consta de los siguientes pasos:

  1. La captura de los datos de algún tipo de fuente (probablemente un SQL/noSQL o base de datos .los archivos csv).
  2. El análisis de los datos en una decente y razonable formato (marco de datos), de modo que uno puede hacer las operaciones y de pensar de las mismas.
  3. La aplicación de algunas funciones a los datos (agrupación, supresión, fusión, cambio de nombre).
  4. La aplicación de algún tipo de modelo a los datos (regresión, clustering, una red neuronal o de cualquier otro más o menos complicada teoría).
  5. Implementar / presentación de sus resultados de una manera más o menos técnico de la audiencia.

Obtención de datos

El 99% del tiempo, el proceso de recuperación de los datos se reduce a la consulta de algún tipo de SQL o Impala base de datos: tanto en Python y R específicas de los clientes o de las bibliotecas que hacer el trabajo en ningún momento e igualmente bien (RImpala, RmySQL de R y MySQLdb para Python trabajo sin problemas, no mucho para agregar). Cuando se trata de leer externo .archivos csv, data.table paquete de R proporciona la función fread que lee en un enorme y complicado .los archivos csv con cualquier custom opción de análisis en ningún momento, y transforma el resultado directamente en las tramas de datos con los nombres de columna y fila de números.

La organización de las tramas de datos

Queremos que los datos se almacenan en una especie de tabla de modo que podemos acceder a cualquiera de una sola entrada, una fila o una columna con facilidad.

El R paquete data.table ofrece inmejorables formas de etiqueta, cambiar el nombre, eliminar y acceder a los datos. La sintaxis estándar es muy similar a SQL como dt[i, j, fun_by], donde el que está destinado a ser dt[where_condition, select_column, grouped_by (or the like)]; la costumbre funciones definidas por el usuario se puede poner en allí, así como en la j cláusula, por lo que son completamente libres para manipular los datos y aplicar cualquier complicados o funciones de lujo en grupos o subconjuntos (como tomar la i-ésima fila, k-ésimo elemento y se suma a la (k-2)-ésimo elemento de la (i-1)-ésima fila si y sólo si la desviación estándar de toda la columna es lo-que-es, agrupados por la última columna del todo). Eche un vistazo a los puntos de referencia y en este otro sorprendente pregunta ASÍ. Ordenar, eliminar y cambiar el nombre de las columnas y filas de hacer lo que tienen que hacer, y el estándar vectorizada R métodos de apply, sapply, lapply, ifelse realizar vectorizada operaciones en las columnas y marcos de datos por completo, sin bucle a través de cada elemento (recordar que cuando usted está utilizando bucles en R que lo están haciendo mal).

Python's counterweapon es el pandas biblioteca. Se establece finalmente la estructura pd.DataFrame (estándar de Python carece, por alguna razón todavía desconocida para mí) que trata los datos por lo que son, es decir, los marcos de datos (en lugar de algunos numpy array, numpy list, numpy matrix o lo que sea). Las operaciones de agrupación, re-nombrar, clasificar y como se puede conseguir fácilmente y aquí, también, el usuario puede aplicar cualquier función personalizada para un conjunto de datos agrupados o subconjunto de la estructura usando Python apply o lambda. Personalmente no me gusta la gramática df[df.iloc(...)] para acceder a las entradas, pero eso es gusto personal y no hay ningún problema. Puntos de referencia para agrupar las operaciones son todavía un poco peor que el R data.table pero a menos que usted desea guardar 0,02 segundos para la compilación no hay gran diferencia en el rendimiento.

Las cadenas de

El R camino para el tratamiento de cadenas es el uso de la stringr paquete que permite que cualquier manipulación de texto, anagrama, expresión regular, por detrás de espacios en blanco o similar con facilidad. También puede ser utilizado en combinación con JSON bibliotecas que desempaquetar JSON diccionarios y unlist sus elementos, de modo que uno tiene un final de trama de datos, donde los nombres de las columnas y los elementos son lo que tienen que ser, sin ningún no-UTF8 carácter o espacio en blanco que hay.

Python Pandas .str. hace el mismo trabajo de jugar con las expresiones regulares, por detrás o persona tan buena como la de su competidor, por lo que incluso aquí no hay gran diferencia en el sabor.

La aplicación de modelos

Aquí es donde, en mi opinión, las diferencias entre los dos idiomas surgir.

R tiene hoy en día, una inmejorable conjunto de librerías que permiten que el usuario básicamente hacen lo que quieren en una o dos líneas de código. Estándar funcional o polinomio regresiones se realiza en una sola línea y producir salidas cuyos coeficientes son fácilmente legibles, acompañados por sus correspondientes intervalos de confianza y los valores de p de las distribuciones. Asimismo, para la agrupación, del mismo modo en el que el azar bosque de los modelos, así como para dendograms, análisis de componentes principales, la descomposición de valor singular, logística encaja y muchos más. La salida para cada uno de los anteriores más probable es que viene con un determinado trazado de la clase que genera la visualización de lo que acaba de hacer, con colores y burbujas para los coeficientes y parámetros. Pruebas de hipótesis, pruebas estadísticas, Shapiro, prueba de Kruskal-Wallis o similares se pueden realizar en una sola línea de código por medio de las bibliotecas adecuadas.

Python está tratando de mantenerse al día con SciPy y scikit-learn. La mayoría de los análisis estándar y están disponibles en modelos, pero son un poco más de código y menos intuitivas para leer (en mi opinión). Más complicado maquinarias faltan, aunque algunos pueden rastrearse en algunas combinaciones de las ya existentes en las bibliotecas. Una cosa que yo prefiero hacerlo en Python en lugar de en R es la bolsa-de-palabra de análisis de texto con bi-gramas, tri-gramas y de órdenes superiores.

La presentación de los resultados

Ambas lenguas tienen hermosas herramientas de trazado, R ggplot2 por encima de todo y la correspondiente Python equivalente. En realidad no tanto para competir, que hacen el trabajo seguro y sonido, aunque creo que si la presentación de los resultados puede que tenga que utilizar otras herramientas—hay de fantasía colorido diseño de las herramientas por ahí y ni Python ni R tienen el propósito de sorprender a la audiencia con lujo de color rojo y verde arrastrar y gotas. R últimamente ha publicado una gran cantidad de mejoras en sus shiny app características, que básicamente permitirá producir resultados interactivos. Nunca he querido aprender, pero sé que está ahí, y la gente lo usa bien.


Nota de lado

Como nota al margen, me gustaría destacar que la principal diferencia entre los dos lenguajes es que Python es un lenguaje de programación de propósito general, hecho por y para ciencias de la computación, la portabilidad, implementaciones y así sucesivamente y así sucesivamente. Es impresionante en lo que hace y es sencillo de aprender; no hay nadie que no le gusta python. Pero es un lenguaje de programación para hacer la programación.

R, por otro lado, fue inventado por y para los matemáticos, físicos, estadísticos y de datos científicos. Si usted viene desde el fondo todo lo hace perfecto sentido porque refleja perfectamente y reproduce los conceptos utilizados en las estadísticas y las matemáticas. Pero si, por el contrario, vienen de una ciencia de la computación de fondo y desea simular Java o C en R va a ser decepcionado; no tiene "objetos" en el estándar de sentido (bueno, sí, pero no lo que normalmente se piensa que es...), no tienen clases en el estándar de sentido (bueno, sí, pero no lo que normalmente se piensa que es...), no tiene "punteros" o todas las otras ciencias de la computación estructuras - pero sólo porque no lo necesitan. Por último, pero no menos importante: la documentación y los paquetes son fáciles de crear y leer (si usted está utilizando Rstudio); hay un gran y apasionado de la comunidad, y de ahí se toma literalmente cinco segundos en Google "cómo hacer insertar-aleatorio problema en R", cuya primera entrada redirige a una solución para el problema (hecho por alguien más) con el código correspondiente, en ningún momento.

La mayoría de las empresas industriales tienen su infraestructura construida en Python (o Python-entorno amable) que permite una fácil integración de código de Python (sólo import myAnalysis cualquier lugar y son, básicamente, de hecho). Sin embargo, toda la tecnología moderna, servidor o plataforma fácilmente se ejecuta de fondo R código sin ningún problema así.

15voto

David Puntos 41
  • Python es un general lenguaje de programación: por lo tanto, es bueno para hacer muchas otras tareas además, el análisis de datos. Por ejemplo, si queremos automatizar nuestro modelo de ejecución en el servidor de producción, luego de python es una muy buena elección. Otros ejemplos incluyen la conexión de hardware/sensores para la lectura de datos, interacción con bases de datos (relacionales o no estructurada de datos como JSON), análisis de datos, la programación de la red (TCP/IP), interfaz gráfica de usuario, interactuando con la shell, etc. (Bueno, ¿por qué un científico de datos que desee hacerlo muchos de estos tipos de tarea, que poco tienen que ver con los modelos predictivos? Creo que las personas tienen diferentes definiciones de Lo que es un científico de datos? En algunas organizaciones, el análisis de los datos y realizar el análisis descriptivo con el tablero de instrumentos es lo suficientemente bueno para el negocio y los datos no es lo suficientemente maduro para hacer modelos predictivos. Por otro lado, en muchas pequeñas empresas, la gente puede esperar de datos a los científicos a hacer un montón de ingeniería de software. Conociendo python se hacen independientes de otros ingenieros de software.)

  • R tiene un montón de paquetes estadísticos que son mucho mejor que python o MATLAB. Mediante el uso de R, uno puede realmente pensar en el modelo de nivel de aplicación nivel de detalle. Esta es una gran ventaja en el desarrollo de modelos estadísticos. Por ejemplo, muchas personas están manualmente la aplicación de redes neuronales en python; haciendo ese trabajo no puede ayudar a entender por qué las redes neuronales de trabajo, pero sólo hay que seguir la receta para duplicar el trabajo de otros para comprobar si funciona. Si estamos trabajando en R, podemos fácilmente se centran en las matemáticas detrás de la modelo, en lugar de los detalles de implementación.

En muchos casos, la gente los usa juntos. La construcción de software es fácil de hacer en python, y la construcción de modelos es mejor en R. Si queremos ofrecer un modelo de producción, pero no un trabajo, se puede necesitar tanto. Si su empresa tiene una gran cantidad de ingenieros de software, usted puede necesitar más R. Y si su empresa tiene una gran cantidad de científicos de investigación, usted puede necesitar más de python.

9voto

Radu Ursache Puntos 1

Los programadores de todos los rayas de subestimar cuánto opciones de idioma son culturales. Los desarrolladores Web como Node.js. Científicos como Python. Como políglota ingeniero de software que puede manejar Javascript fluidez y Java la rigidez de la misma, me he dado cuenta de que no hay ninguna razón intrínseca de estos idiomas son malos el uno del otro, empleos-sólo la enorme cantidad de paquetes, documentación, comunidades, libros, etc. alrededor de ellos.

(Por razones intrínsecas uno al azar idioma es mejor que algún otro idioma, véase la próxima comentarios a esta respuesta.)

Personal de mi predicción es que en Python es el camino del futuro, porque puede hacer de todo, R - o más bien, bastante de lo que R puede que dedicado a los programadores están trabajando para llenar los vacíos - y es mucho mejor ingeniería de software en el lenguaje. La ingeniería de Software es una disciplina que se ocupa de:

  • confiando en su código de fiabilidad suficiente para ponerlo en producción (por lo que cualquier máquina de aprendizaje modelo que sirve a los usuarios en tiempo real)
  • asegurar que su código puede seguir trabajando, ya que se somete la modificación y reutilización (marcos de pruebas de unidad, por ejemplo)
  • un enfoque en la lectura, para el beneficio de los demás y de sí mismo en tan poco como 6 meses
  • un profundo énfasis en la organización del código, para la facilidad de control de versiones, cancelaciones anteriores versiones de trabajo, y el desarrollo simultáneo de múltiples partes
  • prefiriendo herramientas y tecnologías con mejor documentación, y de forma ideal con la propiedad de que no funcionará a menos que el uso de ellos a la derecha (este fue mi mayor queja con Matlab -- I google una pregunta y tengo que leer a través de sus más terribles de los foros de la búsqueda de una respuesta)

Además, francamente, Python es más fácil de aprender.

Los científicos y estadísticos que se dan cuenta de que están interesados a la buena ingeniería de software de la práctica, no un estado independiente y no molestada profesión. Sólo mi opinión, pero los papeles demostrando la fragilidad de académicos código es compatible con esta.

Esta respuesta es mi opinión -, sino que pidió a un muy obstinado en la pregunta, y ya que es bien recibido hasta el momento yo sentía que se lo merecía un poco exigente, razonablemente informado (espero!) opinión en respuesta. Hay un argumento serio para Python más de R a través de la junta y sería negligente de mi parte para intentar post no partidista respuesta cuando la realidad puede ser partidista.

8voto

user2690888 Puntos 1

Yo soy un usuario R, pero creo que Python es el futuro (creo que no es la sintaxis)

Python es el futuro
El beneficio de Python es como otras personas ya han mencionado mucho más amplias de apoyo, y, para los programadores, más lógicos sintaxis.
También la posibilidad de que se puede traducir las conclusiones de su análisis en un sistema de producción es mucho más sencillo.
Tal vez es porque de Python ser de propósito general y R no es pero incluso yo levante mis cejas cuando veo un productionized R tubería.
Pero no sólo eso, incluso para las aplicaciones más Avanzadas de Python se está acercando rápidamente (Scikit-learn, PyBrain, Tensorflow etc) y mientras que R es todavía la lingua franca de los académicos sobre cómo aplicar los métodos estadísticos de Python se ha vuelto enorme en el sector de los profesionales debido a la llegada de avanzada de las bibliotecas especializadas.

Pero R no es malo
Muchas personas parece que les gusta saltar en la "R tiene una sintaxis incorrecta" carro.
Deseo proponer la sintaxis de R para ser una buena cosa!
Asignación de funciones, evaluación diferida, no estándar de evaluación y fórmulas son enormes beneficios cuando usando R.
Sólo ahorra mucho tiempo al no tener que preocuparse de escapar de los nombres de las variables que se hace referencia en el resumen o cómo construir la lógica de lo que es el modelo contra qué o mirando los nombres de con names() y, a continuación, asignar nuevos nombres añadiendo <- c("A", "B", "C").
Cuando las personas se quejan de R extraña sintaxis ellos lo ven como un lenguaje de programación, no como una ciencia de datos de la herramienta.
Como alguien que viene de R y amorosa dplyr me parece pandas' sintaxis un poco torpe en comparación.
Sí es un poco más flexible, pero para la mayoría de las tareas que tomar mucho más pulsaciones de teclas para realizar un simple comando que en R, que son meramente para satisfacer Python analizador, no para expresar su idea.

En resumen
Por supuesto, es sabio para saber tanto y mientras que Python es llegar R del dominio específico de las opciones de diseño simple y sencillo para los ad hoc de trabajo. El gran inconveniente de R es que es difícil dejar a su dominio, que, básicamente, tiene que hacer una vez que se intenta aplicar sus conclusiones en una manera sostenible.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X