¿Cuál es mejor entre vs y python para analizar datos?
Resumen general: R es principalmente popular en el mundo académico, y Python (numpy scipy) es más conveniente y práctico en ingeniería.
R es la versión de código abierto de S (Splus), o la próxima generación. Se originó en Auckland, Nueva Zelanda. Este software tiene una sólida base estadística. Lo que quiero decir aquí es que si no está familiarizado con el conocimiento estadístico (historial), la documentación de ayuda de R parece muy agotadora. Desarrollado por personas con experiencia en estadística. El grupo de mantenimiento de R se llama CRAN-R. En cuanto a bioinformática, existe una organización llamada Bioconductor, que tiene muchos paquetes de software que se pueden utilizar en bioinformática. Tienen su propio sistema de mantenimiento de paquetes.
Python es un lenguaje completo (aquí se refiere específicamente al intérprete CPython), numpy scipy es un paquete de expansión para cálculos numéricos, pandas se usa principalmente para el procesamiento de datos (según numpy) y sympy realiza cálculos simbólicos. (¿similar a Mathematica?) Además, hay algunos paquetes menos maduros como sciki learn y modelos estadísticos. No tan maduro como R. Pero ha alcanzado un nivel utilizable. Es un paquete estadístico escrito por lectores de computadora. Después de actualizar ipython a 1.0, sus funciones están básicamente completas. Su cuaderno es muy poderoso (parece matemático) y también está basado en la web, que es muy fácil de usar para colaborar y compartir.
Rendimiento:
Todo el mundo dice que R es lento, especialmente la gente de CS. De hecho, hay dos puntos principales aquí: todas las llamadas a matrices en R se copian, y el segundo es que Rscript es lento. En tercer lugar, el procesamiento de big data es lento. Si R se usa bien, R no es demasiado lento. Específicamente, use menos Rscript, más comandos y ejecute algunos datos pequeños. En este caso, lo que realmente se está ejecutando son las bibliotecas Fortran y C detrás de él. Todos ellos tienen una historia de casi 20 o 30 años. Se puede decir que es extremadamente confiable y ya no se puede optimizar (refiriéndose a un solo subproceso, si observa el código fuente, verá muchas constantes inexplicables, pero después de usarlo, ¡será más preciso y más rápido! ). Por ejemplo, si usted mismo escribe un script en R y usa bucles dentro de bucles, realmente querrá morir. Una cosa más: ¡R procesa archivos de texto muy lentamente!
En el análisis final, Python sigue siendo un lenguaje de programación con un intérprete y tiene un defecto fatal: GIL, pero lo más valioso de Python es que puede volverse más rápido fácilmente. Por ejemplo, pypy, cython o vincular directamente ctypes a la biblioteca C. Escriba un prototipo en Python puro y luego continúe creando perfiles y acelerando. Puede alcanzar fácilmente la misma velocidad que C, pero lleva mucho menos tiempo escribir programas y depurar.
Computación paralela:
R v15 tiene su propio paquete paralelo, que es bastante fácil de usar. Pero, de hecho, sigue bifurcando o mpi, lo que consume mucha memoria. parSapply, parApply, etc. son realmente útiles.
Aunque Python tiene GIL, el enemigo mortal de la computación paralela, sí tiene multiprocesamiento (dependencia de bifurcación), que permite compartir datos, etc. Se estima que el consumo de memoria es mejor que R. Si los datos están dispersos, habrá muchos gastos generales. Cuando se trata de MPI, mpi4py es bastante fácil de usar. El uso de cython combinado con openmp puede romper el GIL, pero no se pueden llamar objetos de Python durante el proceso.
Curva de aprendizaje: Supongamos estudiantes que no saben programar.
Es fácil comenzar con R desde el principio. Una vez que encuentre los comandos y paquetes básicos, puede simplemente imprimirlos y obtener los resultados. Pero si desea escribir sus propios algoritmos y optimizar el rendimiento, la dificultad de aprendizaje aumenta considerablemente.
Python es fácil de aprender y la mayoría de los documentos de ayuda son mucho mejores que R. Algunas bolsas no son tan cómodas de usar. En general es empinado y profundo.
Recursos ampliados:
Básicamente, los nuevos métodos estadísticos tendrán paquetes R, que son fáciles de instalar y prácticos. Pero son básicamente paquetes informáticos escritos por personas que trabajan en estadística. Por lo tanto, puede haber algunos problemas con el rendimiento. Hay dos sitios web de gestión de paquetes muy conocidos, cran-r y bioconductor. Entonces, quienes se dedican a la bioquímica estiman que R es muy conveniente de usar.
Python tiene menos paquetes de computación estadística que R, muchos son muy jóvenes y aún están en desarrollo. Es mejor que un paquete estadístico escrito por informáticos, así que tenga más cuidado al utilizarlo.
Dibujo:
Las herramientas que vienen con R son muy fáciles de usar y también hay una herramienta muy hermosa y poderosa como ggplot.
Python tiene matplotlib y el efecto de dibujo se siente mejor que el que viene con R. La interfaz está basada en QT y tiene soporte multiplataforma. Tal vez sea porque he usado mucho R, pero pyplot todavía no es fácil de usar y siento que sus diversos componentes no están muy unificados.
IDE:
Rstudio es muy bueno y proporciona un entorno similar a matlab. (He usado vim-r-plugin, emacs ess y ahora vim).
Hay Python (x, y) y muchas herramientas comerciales en Windows. (Mi entorno actual de emacs no es muy cómodo ~)
Sugerencia:
Si solo maneja datos (pequeños), use R. Los resultados son más confiables, la velocidad es aceptable, es fácil de usar y hay muchos comandos y programas listos para usar disponibles.
Si desea desarrollar su propio algoritmo, procesar big data o requerir muchos cálculos, utilice Python. La eficiencia del desarrollo es alta y todo está bajo control.
ps: Usar ciegamente paquetes R es más seguro que usar ciegamente paquetes Python. Al menos R le indicará un artículo, mientras que Python solo apunta a un montón de código. Si hay un problema con R, el autor del artículo y el revisor serán enterrados con él.