Curso
La ciencia de datos se ha convertido en parte esencial de prácticamente todos los sectores. Desde la banca hasta los seguros o la salud, se generan cantidades ingentes de datos cada segundo. Por eso, es imprescindible ser capaces de aprovechar ese volumen de información para obtener conclusiones accionables y ponerlas en marcha. Hoy existen muchas herramientas en forma de lenguajes de programación. Entre todas ellas, Python y R lideran la carrera.
Tanto Python como R se usan ampliamente en el mundo de la ciencia de datos. Ambos lenguajes cuentan con un gran abanico de herramientas que ofrecen funciones ideales para este ámbito. Mientras que Python es un lenguaje de propósito general utilizado para multitud de aplicaciones, R es un lenguaje y entorno de cálculo estadístico y gráficos.
Panorama general del ecosistema de Python y R
Veamos distintos aspectos de estos lenguajes y qué tienen de bueno y de no tan bueno.
Lenguaje de programación Python

Python es un lenguaje interpretado, de alto nivel y de propósito general. Lo creó y publicó Guido Van Rossum en 1991. Desde entonces, Python ha ganado muchísima popularidad en diversos campos, incluida la ciencia de datos. Hoy en día está entre los lenguajes que más crecen en el mundo.
Algunas razones de su enorme popularidad son:
- Lenguaje orientado a objetos
- Propósito general
- Una comunidad increíblemente activa
- Sencillo, fácil de entender y de aprender
- Paquetes eficientes como pandas, numpy y scikit-learn que lo convierten en una excelente opción para actividades de machine learning.
Sin embargo, en cálculo estadístico Python se queda atrás y no dispone de paquetes tan especializados como su homólogo R.
Lenguaje de programación R

R es, esencialmente, un software para el cálculo estadístico y la visualización, respaldado por la R Foundation for Statistical Computing. Apareció por primera vez en agosto de 1993, con su primera versión estable en 1995, y desde entonces lo utilizan ampliamente estadísticos y data miners para el análisis estadístico.
Algunas características que hacen que R destaque frente a otros lenguajes son:
- Incluye paquetes para prácticamente cualquier aplicación estadística que puedas imaginar. CRAN alberga actualmente más de 10.000 paquetes.
- Viene equipado con excelentes librerías de visualización como ggplot2.
- Capaz de realizar análisis completos con paquetes integrados.
Pero tiene una desventaja: en rendimiento, R no es el lenguaje más rápido y, al trabajar con conjuntos de datos grandes, puede consumir mucha memoria.
Usar Python y R juntos
R y Python son herramientas excelentes por sí solas, pero a menudo se conciben como rivales. En lugar de verlo así, deberíamos aprovechar los puntos fuertes de ambos lenguajes para quedarnos con lo mejor de cada casa.
Hoy, en la comunidad de ciencia de datos hay personas que trabajan con un solo lenguaje. Aun así, también hay quien utiliza tanto Python como R, aunque son minoría. Por otro lado, muchos profesionales se mantienen fieles a un único lenguaje, pero desearían tener acceso a ciertas capacidades del otro. Por ejemplo, quienes usan R a veces echan de menos la orientación a objetos nativa de Python y, del mismo modo, algunos usuarios de Python querrían disponer de la amplia gama de distribuciones estadísticas que ofrece R.
La siguiente figura muestra los resultados de una encuesta realizada por Red Monk en el tercer trimestre de 2018. Estos resultados, basados en la popularidad de los lenguajes en Stack Overflow y Github, dejan claro que tanto R como Python están muy bien valorados para actividades de ciencia de datos. Por tanto, no hay ninguna razón de peso para no trabajar con ambos en un mismo proyecto. Nuestro objetivo final debe ser hacer mejores análisis y extraer mejores insights; la elección del lenguaje no debería ser un obstáculo para lograrlo.

¿Cómo usar Python y R en un mismo proyecto?
Cuando se trata de incrustar SQL en un script de R o de Python, ni nos lo pensamos. ¿Por qué no aprovechar del mismo modo la potencia estadística de R junto con las capacidades de programación de Python? Sí, se puede, y existen librerías que gestionan muy bien estas transiciones.
Básicamente hay dos enfoques para usar Python y R en paralelo dentro de un mismo proyecto.
R dentro de Python
Consiste en llamar a funciones de R desde un script de Python. Algunas de las librerías creadas para este fin son:
1. PypeR
PypeR ofrece una forma sencilla de acceder a R desde Python mediante pipes. PypeR también está incluido en el índice de paquetes de Python, lo que facilita su instalación. Es especialmente útil cuando no se necesitan transferencias interactivas de datos frecuentes entre Python y R. Al ejecutar R a través de un pipe, el programa en Python gana flexibilidad en el control de subprocesos, el control de memoria y la portabilidad entre los sistemas operativos más populares, incluidos Windows, GNU/Linux y macOS.

Convenciones para la conversión de objetos de Python a objetos de R
2. pyRserve
pyRserve es otra librería creada para este propósito. Utiliza Rserve como pasarela de conexión RPC. A través de esta conexión, se pueden establecer variables en R desde Python y también llamar remotamente a funciones de R. En muchos casos, los objetos de R se exponen como instancias de clases implementadas en Python, con funciones de R como métodos asociados a esos objetos.
3. rpy2
La librería rpy2 se utiliza con más frecuencia que las dos anteriores. La razón es que rpy2 está en desarrollo activo y constante. Ejecuta R incrustado en un proceso de Python. Crea un marco que puede traducir objetos de Python a objetos de R, pasarlos a funciones de R y convertir la salida de R de vuelta en objetos de Python.

Una ventaja de usar R dentro de Python es poder aprovechar con facilidad paquetes magníficos de R como ggplot2, tidyr, dplyr, etc., directamente en Python. Por ejemplo, veamos cómo usar ggplot2 para hacer mapas en Python.
- Gráfico básico

https://rpy2.github.io/doc/latest/html/graphics.html#plot

- Geometría

https://rpy2.github.io/doc/latest/html/graphics.html#geometry

Recursos de rpy2
Para una revisión en profundidad y detalles sobre la instalación y el funcionamiento de rpy2, puedes consultar estos recursos:
- Documentación oficial de rpy2
- RPy2: Combining the Power of R + Python for Data Science
- Accessing R from Python using RPy2
Python dentro de R
También es posible ejecutar scripts de Python en R utilizando alguna de estas alternativas:
1. rJython
Este paquete implementa una interfaz con Python a través de Jython. Está pensado para que otros paquetes puedan incrustar código Python junto con R.
2. rPython
rPython es, de nuevo, un paquete que permite a R llamar a Python. Posibilita ejecutar código Python, hacer llamadas a funciones, asignar y recuperar variables, etc., desde R.
3. SnakeCharmR
SnakeCharmR es una versión modernizada de rPython. Es un fork de «rPython» que utiliza «jsonlite» e introduce muchas mejoras respecto a rPython.
4. PythonInR
PythonInR facilita mucho el acceso a Python desde R, ofreciendo funciones para interactuar con Python desde el propio R.
5. reticulate
El paquete reticulate proporciona un conjunto completo de herramientas para la interoperabilidad entre Python y R. De todas las alternativas anteriores, es la más utilizada, en gran parte porque RStudio la desarrolla de forma muy activa.
Reticulate incrusta una sesión de Python dentro de la sesión de R, lo que permite una interoperabilidad fluida y de alto rendimiento. El paquete te permite entrelazar código Python en R, creando un nuevo tipo de proyecto que teje ambos lenguajes.

El paquete reticulate ofrece lo siguiente:
- Llamar a Python desde R de varias formas, incluidas R Markdown, ejecución de scripts de Python, importación de módulos de Python y uso interactivo de Python dentro de una sesión de R.
- Traducción entre objetos de R y Python (por ejemplo, entre data frames de R y de pandas, o entre matrices de R y arrays de NumPy).
- Vinculación flexible con distintas versiones de Python, incluidos entornos virtuales y entornos de Conda.
Recursos de reticulate
Algunos recursos muy útiles para usar el paquete reticulate son:
- La documentación es bastante completa e incluye muchos ejemplos y casos de uso para empezar.
- https://longhowlam.wordpress.com/2017/04/10/test-driving-python-integration-in-r-using-the-reticulate-package/
- SNAKES IN A PACKAGE: COMBINING PYTHON AND R WITH RETICULATE
Conclusión
R y Python son herramientas excelentes y, casi siempre, suficientes para abordar tareas de ciencia de datos desde cero. Puede que ni siquiera necesites usar ambos en un mismo proyecto. Aun así, conocer los dos resulta muy útil y, sobre todo, te da la opción de trabajar en entornos diferentes. Como se suele decir, lo importante son las habilidades, no las herramientas. Así que conviene estar abierto a aprender nuevas herramientas y lenguajes si nos ayudan a resolver el problema con más facilidad.
Si quieres empezar con cualquiera de los dos lenguajes, prueba los cursos de DataCamp Introduction to Python o Introduction to R. También puedes echar un vistazo a nuestro Python Tutorial for Beginners.
Referencias:
- Interfacing R and Python — Andrew Collier
- From ‘R vs Python’ to ‘R and Python’

