Que Python y R son dos de los lenguajes más utilizados para el análisis de datos y su procesamiento mediante técnicas de data mining y business intelligence es un hecho, que a día de hoy, nadie se cuestiona. ¿Pero a qué se debe esa diferencia de uso frente a otros lenguajes como SAS o SPSS? ¿Cuál es mejor utilizar según nuestras necesidades?
Estas y otras cuestiones intentaremos resolver a lo largo del siguiente artículo, dando pinceladas sobre ambos lenguajes de programación.
Python, bien se define como:
“Es un lenguaje de programación interpretado y multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Usa tipado dinámico y es multiplataforma”
Se trata de un lenguaje de programación que tiene detrás una gran comunidad (sin ánimo de lucro) que se encarga de enriquecerlo (mediante la creación de nuevas librerías, funciones, etc.) y mejorarlo. Se puede consultar la web de la Python Software Fundation y la asociación de Python España, para conocer las novedades o descargar manuales y exponer tus inquietudes en la comunidad Python.
¿Qué aporta Python en el análisis de datos?
Los dos motivos principales que han generado un creciente uso de Python en el campo del análisis de datos son:
- Las numerosas librerías creadas para esta finalidad como:
- Numpy y Pandas que implementan funciones para cálculos matemáticos y estadísticos
- Mlpy con algoritmos de aprendizaje máquina
- Matploit que permite la visualización y representación gráfica de los datos.
- Su integración con aplicaciones como MongoDB (base de datos no relacional), Hadoop o Pentaho.
Si a todo ello se le suma la fácil y rápida curva de aprendizaje junto con su versatilidad, hacen de Python un lenguaje de gran calidad para los analistas de datos.
En la otra cara de la misma moneda, tenemos R, un lenguaje de programación de código abierto creado con el objetivo de mejorar las prestaciones en visualización y análisis de datos ofrecidas previamente por S.
R, tiene un enfoque más orientado al análisis estadístico, lo que lo hacen muy útil para la minería de datos. Es también multiparadigma, orientado a objetos, vectorial y multiplataforma, y al igual que Python tiene una gran comunidad de desarrolladores detrás, que lo mejoran y enriquecen.
¿Qué aporta R al análisis de datos?
Como ya hemos comentado, R posee unas características especiales que lo hacen especialmente versátil para el manejo de elementos estadísticos, en concreto para operaciones con matrices y vectores, lo que facilita la manipulación de bases de datos. Por tanto R permite manipular (seleccionar, recodificar y recuperar) datos muy rápidamente. De hecho existen algunos paquetes diseñados para ello, como plyr, lo que hacen que este lenguaje de programación sea mucho más hábil y eficiente en la preparación de los datos para su posterior análisis.
Por otro lado, como fue un lenguaje diseñado específicamente para hacer análisis estadístico, es muy preciso y exacto para el análisis de datos.
Dispone de una gran cantidad de paquetes para la creación de gráficos, lo que le aportan unas capacidades avanzadas en la visualización de los datos y los resultados del análisis. A parte del paquete básico de R que aporta una cantidad de funciones para gráficas, existen otros como lattice o ggplot.
En cuanto a Machine Learning, R tiene implementados una gran cantidad de algoritmos, como consecuencia de las diferentes líneas de investigación de grupos que dieron pie a su creación, debido precisamente al hecho de que R nació en el ámbito académico.
Como contra en R, está su curva de aprendizaje, que suele ser más lenta y complicada si la comparamos con la de Python.
Entonces…¿con cuál me quedo?
Esta pregunta quizás sea la más complicada a la que dar respuesta, ya que como hemos visto a lo largo del artículo, tanto R como Python poseen un gran número de características que los hacen óptimos para el análisis de datos y de ayuda para la toma de decisiones en Businees Intelligence.
El uso de uno y otro debe por tanto estar motivado por las respuestas como usuarios a las siguientes preguntas:
- ¿Qué tipo de problema quiero resolver?Optaremos por uno u otro en función del tipo de análisis de datos que queramos llevar a cabo, ya sea Machine Learning, Data Mining, analítica web, etc. Así R es una muy buena opción cuando el análisis de datos requiere una computación independiente o un análisis individual en los servidores, mientras que Python lo usaremos cuando el análisis de datos requiera ser integrado con las aplicaciones webs o si necesitamos incorporar el código de análisis estadístico en una base de datos de producción.
- ¿Cuánto me costará aprender a manejar el lenguaje de programación? Se debe tener en cuenta, en función de nuestros conocimientos previos en programación, estadística, etc., si R o Python nos resultará más fácil de aprender y poner en práctica, se debe tener en cuenta que el objetivo es resolver el problema que tenemos entre manos, y aprender el uso de las herramientas para resolverlo no debe convertirse en el núcleo del problema en sí.
- ¿Con qué herramientas se va integrar en el entorno que trabajamos? Debemos conocer el entorno en el que trabajamos y qué programas para big data y business intelligence vamos a tener que manejar, para elegir el lenguaje de programación que mejor se integre con nuestras herramientas.
Dar respuesta a estas preguntas puede orientarnos en el uso de uno u otro lenguaje, ya que como hemos visto, ambos son muy potentes para la analítica de datos, están en constante desarrollo y actualización, además de integrarse a la perfección con diferentes herramientas de business intelligence.
Para más información se puede consultar el artículo de Data camp, en el que se comparan ambos lenguajes de programación mediante una infografía bastante esquemática y visual, que nos puede dar una idea general de un solo vistazo, así como el siguiente artículo en el que se hace una análisis comparativo entre R y Python en cifras.
Te esperamos en los próximos artículos en donde hablaremos mas acerca de estos temas que hoy en día son de importancia e interés en el mundo de la tecnología.