Lenguajes de Programación

R vs Python: En qué se diferencian y en qué se parecen

Comparativa entre R y Python para que conozcas las diferencias y similitudes de estos lenguajes, y así poder elegir el que más se adecue a tus necesidades.

Publicado el 09 de Abril de 2021
Compartir

Estoy seguro que este no es el primer artículo que visitas sobre el tema, hay cientos, miles de artículos que de un modo u otro comparan0 los dos idiomas de programación más extendidos en el mundo de la ciencia de datos y por tanto del análisis de datos en general. Para un número creciente de personas, la ciencia de datos es una parte central de su trabajo. Durante la última década el aumento de la disponibilidad de datos, la irrupción de las tecnologías en la nube, ofreciendo unas capacidades de cómputo más potente y el énfasis en la importancia de la toma de decisiones basadas en análisis en los negocios la han convertido en una era de apogeo para la ciencia de datos. Según un informe de IBM, en 2020 se publicaron cerca de 2,72 millones de vacantes para trabajos de análisis de datos en EE.UU, demasiado gran número para ser ignorado.

En la industria los dos lenguajes de programación más populares en la actualidad para el trabajo de ciencia de datos son Python y R. Ambos lenguajes son excelentes opciones y este artículo no pretende ser una guerra para ver cuál es mejor o peor, sino que desde una perspectiva objetiva y basada en nuestra experiencia intentaremos desgranar sus pros y contras para averiguar qué idioma es el más adecuado para según qué escenarios, lo “fácil”, lo “difícil” y viceversa por lo que mostraremos algunos ejemplos en el proceso.

No es necesario que sepas de programación para entender los ejemplos, la idea es que este artículo sirva de introducción para un público general, pero si estás buscando aprender algunas habilidades de programación para trabajar con datos, tomar un curso de Python o un curso de R serían excelentes opciones.

Una breve descripción de la historia de Python y R

Python

Python fue presentado en 1989 con una revolucionaria filosofía que proponía la legibilidad y la eficiencia del código como nuevo paradigma frente a otros lenguajes de programación orientado a objetos. Su sencillez y modularidad proporcionaba a los científicos de datos la posibilidad de trabajar directamente con un código amigable y con una curva de aprendizaje razonable que les permitía ejecutar tareas con mejor estabilidad, modularidad y legibilidad del código.

Su popularidad ha ido creciendo y en la actualidad la ciencia de datos es solo una pequeña parte dentro del diverso ecosistema de Python. Existen bibliotecas de aprendizaje automático que incluyen herramientas populares como Keras o TensorFlow, que permiten a los científicos de datos desarrollar modelos de datos sofisticados que se conectan directamente a sistemas de producción. Si quieres conocer más detalles en especial sobre Python, pasado, presente y su evolución, te recomiendo leer el siguiente artículo: Qué es Python.

R

R es un lenguaje de programación cuya primera versión apareció en 1992. Durante años fue un lenguaje muy extendido en Universidades y preferido por la mayoría de científicos de datos dado que presentaba notables ventajas a la hora de construir modelos de datos frente a las alternativas presentes en la época.

Esto ha ido permitiendo la creación de una enorme comunidad que ha desarrollado paquetes de código abierto para permitir trabajar con modelos complejos específicos evitando tener que “reinventar la rueda” partiendo de un desarrollo desde cero.

Otra particularidad que lo hizo particularmente destacable fue su capacidad de generar informes de calidad con soporte para la visualización de datos y sus frameworks disponibles para crear aplicaciones web interactivas. Para más información te recomiendo leer el artículo Qué es R y por qué utilizarlo publicado aquí en OpenWebinars.

Diferencias y similitudes entre Python y R

Es difícil elegir entre estos dos lenguajes de análisis de datos pues ambos son increíblemente flexibles, gratuitos y de código abierto, y se desarrollaron a principios de la década de 1990: R enfocado para análisis estadístico y Python como lenguaje de programación de propósito general.

Ambos han ido evolucionando hasta convertirse en imprescindibles. Si estás interesado en proyectos relacionados con el aprendizaje automático, el trabajo con grandes conjuntos de datos o crear visualizaciones de datos complejas ambos se presentan como excelentes opciones.

R tiene una curva de aprendizaje pronunciada y las personas con poca o ninguna experiencia en programación lo encuentran difícil al principio. Una vez que domines el lenguaje, no será tan difícil de entender, pero lleva tiempo. Mientras que Python enfatiza la productividad y la legibilidad del código, lo que lo convierte en uno de los lenguajes de programación más simples. Es preferible por su facilidad de aprendizaje y comprensión.

Por otro lado, Python es un lenguaje de programación de alto nivel y ha sido la elección para crear aplicaciones críticas pero rápidas. De hecho, está presente en innumerables proyectos por esa razón. Por contra R es un lenguaje de programación de bajo nivel debido a que requiere códigos más largos para procedimientos simples. Esta es una de las razones de su velocidad reducida en comparación con Python.

Dicho esto, es el momento de analizar estos dos lenguajes un poco más en profundidad con respecto a su uso y manejo de datos, que incluyen:

  • Recopilación de datos

  • Exploración de datos

  • Modelado de datos

  • Visualización de datos

Recopilación de datos

Python admite todo tipo de formatos de datos diferentes. Podemos trabajar con documentos CSV, manejar archivos JSON procedentes de la web o importar tablas procedentes de consultas SQL.

Además, también podemos trabajar con diferentes conjuntos de datos gracias a la bibliotecas disponibles para capturar datos desde diferentes lugares de manera simultánea usando apenas una o varias líneas de código y analizar en profundidad la información obtenida una vez ordenados los datos.

R puede no ser tan versátil para obtener información de la web como lo es Python, puede manejar datos de sus fuentes más comunes como archivos de texto, CSV, hojas de cálculo Excel, etc. Para mitigar este problema, R dispone de paquetes creados para mitigar sus carencias como es el caso de Rvest que permite realizar una captura de datos web básico.

Exploración de datos

Python dispone de Pandas, una biblioteca pensada para facilitar el análisis de datos, filtrando, ordenando registros en cuestión de segundos. También permite limpiar datos, completar valores no válidos como NaN (no un número) con un valor que tenga sentido para el análisis numérico como 0.

Por contra R se creó precisamente para realizar análisis estadísticos y numéricos de grandes conjuntos de datos. Su funcionalidad básica abarca los conceptos básicos de análisis, optimización, procesamiento estadístico, optimización, generación de números aleatorios, procesamiento de señales y aprendizaje automático.

Esto hace que ofrezca un gran número de posibilidades en este ámbito. Podemos crear distribuciones de probabilidad y aplicar una batería de pruebas estadísticas y de aprendizaje automático en nuestros proyectos con una sencillez que incluso hoy hace palidecer a lenguajes mucho más modernos. Aunque para trabajos más pesados quizá deberemos recurrir a librerías de terceros para aprovechar todavía más su potencial.

Modelado de datos

Python permite hacer análisis de modelado numérico con Numpy, permite realizar cálculos avanzados con SciPy y nos ofrece el acceso a una gran cantidad de potentes algoritmos de aprendizaje automático gracias a la librería scikit-learn. En conjunto podemos aprovechar todo el poder que Python nos ofrece en modelado de datos sin complicaciones.

Por su lado, R es capaz también de realizar el modelado y análisis de datos específicos más allá de su funcionalidad principal. Para ello se suele hacer uso de alguno de los paquetes disponibles para análisis específicos, como es el caso de Poisson.

Visualización de datos

En Python contamos con varias opciones para trabajar con la visualización de datos. Lo más usual es trabajar con la librería Matplotlib que permite generar gráficos y tablas básicas a partir de datos incrustados. Aunque si necesitamos trabajar con gráficos más avanzados mi recomendación pasa por probar Plot.ly. Utilizando su API podemos generar en Python todo tipo de gráficos y paneles.

Y ya, por último, usando la función nbconvert podemos convertir nuestros trabajos en Python en documentos HTML e insertar fragmentos de código con un formato más amigable en sitios web interactivos.

Dicho esto, vamos con R. Como comentaba este lenguaje se creó principalmente para trabajar en análisis estadísticos y demostrar resultados. Debido a esto su ámbito fue principalmente académico y proporciona un potente entorno adecuado para la visualización científica con muchos paquetes especializados en la visualización gráfica de resultados de modo nativa para posteriormente guardar o exportar archivos en formato de imagen o PDF.

Al igual que en Python contamos con librerías específicas para para representación gráfica avanzada como ggplot2, muy utilizado para realizar gráficos de dispersión complejos con líneas de regresión.

R contra Python: Ejemplos

 

Importar un CSV

R

Python

library(readr)

liga <- read_csv("liga_futbol_2018.csv")
import pandas

liga = pandas.read_csv("liga_futbol_2018.csv")

La única diferencia real es que, en Python, necesitamos importar la biblioteca Pandas para tener acceso al dataframe. En R, mientras, podríamos importar los datos usando la función base de R read.csv() con la ventaja de una mayor velocidad.

Encontrar el número de filas

R

Python

dim(liga)
liga.shape
[1] 841 31
(841, 31)

Aunque la sintaxis y el formato difieren ligeramente, podemos ver que, en ambos idiomas podemos obtener la misma información con mucha facilidad.

El resultado anterior nos dice que este conjunto de datos tiene 841 filas y 31 columnas.

Inspeccionar la primera fila de datos

R

Python

head(liga, 1)
liga.head(1)
player pos age bref_team_id

1 Messi Leo MF 23 BAR[output truncated]
player pos age bref_team_id

0 Messi Leo MF 23 BAR[output truncated]

Nuevamente, podemos ver que aunque hay algunas ligeras diferencias de sintaxis, los dos lenguajes son muy similares. Más al detalle, la diferencia viene más en cómo Python y R interpretan los datos. Python al estar orientado a objetos utiliza head como un método en el objeto marco de datos mientras que R tiene una función separada. Estos son simplemente dos enfoques diferentes de programación, algo bastante común.

Encontrar promedios para cada estadística

R

Python

library(purrr)

library(dplyr)

liga %>%

  select_if(is.numeric) %>%

  map_dbl(mean, na.rm = TRUE)
liga.mean()

player NA

pos NA

age 26.5093555093555

bref_team_id NA

[output truncated]
age 26.509356

g 53.253638

gs 25.571726

[output truncated]

Ahora podemos ver algunas diferencias importantes en los enfoques adoptados por R vs Python. En Python, el uso del método de la media dentro del marco de datos encontrará la media de cada columna de forma predeterminada mientras que en R la cosa es un poco más complicada.

Si no tienes experiencia en programación y todo esto te ha sonado un poco a chino y quieres aprender más. Te recomiendo que sigas este curso Introducción a la programación en R o el Curso de Python 3 desde cero.

Python vs R… ¿Cuál elegir?

Por lo general se considera que R es el mejor lenguaje de programación para cualquier profesional de la ciencia de datos, ya que posee un extenso catálogo de métodos estadísticos y gráficos.

Python, por otro lado, puede hacer prácticamente el mismo trabajo que R, los científicos de datos o los analistas de datos lo prefieren debido a su simplicidad y alto rendimiento. Mientras que R es un lenguaje de scripting poderoso y altamente flexible con una comunidad vibrante y un banco de recursos, Python es además un lenguaje orientado a objetos ampliamente utilizado que es fácil de aprender y depurar.

Como no hay una respuesta simple que responda a todos los posibles escenarios. Quizá la mejor manera de poder decidir es respondiendo a alguna de las siguientes preguntas antes tomar una decisión final:

¿Tienes experiencia programando en otros lenguajes?

Si tienes algo de experiencia en programación, Python podría ser el lenguaje más indicado. Su sintaxis es más similar a la de otros lenguajes en comparación con R y su sintaxis. Python se puede leer con facilidad y facilita que podamos desarrollar código más rápidamente.

¿Eres científico o ingeniero?

La verdadera diferencia entre Python y R radica en estar listo para producción. Python es un lenguaje de programación completo y muchas organizaciones lo utilizan en sus sistemas de producción y se integra mucho mejor que R. Sin embargo, para escribir código realmente eficiente, es posible que deba emplear un lenguaje de nivel inferior como C ++ o Java.

Por otro lado, R es un software de programación estadístico muy usado en el mundo académico.

¿Quieres aprender “aprendizaje automático” o “aprendizaje estadístico”?

Continuando con la pregunta anterior. Aquí debemos tener en consideración que el aprendizaje automático es un subcampo de la inteligencia artificial, mientras que el aprendizaje estadístico es un subcampo de la estadística.

Así el aprendizaje automático tiene un mayor énfasis en las aplicaciones a gran escala y la precisión de las predicciones; mientras que el aprendizaje estadístico enfatiza los modelos y su interpretabilidad, precisión e incertidumbre.

¿Necesitas visualizar tus datos en hermosos gráficos?

En lo particular considero que aquí se encuentra la actual batalla a librar. Para la creación rápida de prototipos y el trabajo con conjuntos de datos R va algo por delante por delante. Sin embargo, Python ha alcanzado algunos avances gracias a Matplotlib, pero R todavía parece ser mucho mejor en la visualización de datos.

Conclusión

Y llegamos al final y el momento en el que debemos responder cuál de los dos es el mejor lenguaje de programación. Tal como hemos descrito en el artículo los pros y contras de ambos son en realidad cuestiones que se resuelven en función del enfoque de uso que vayamos a dar.

Por ejemplo, Python es un lenguaje poderoso y versátil que los programadores pueden usar para una variedad de tareas en informática. Aprender Python es además fácil de aprender incluso si no eres programador y nos ayuda a desarrollar en la práctica cualquier conjunto de herramientas para ciencia de datos.

Por otro lado, R es un entorno de programación diseñado específicamente para el análisis de datos que es muy popular en la comunidad de ciencia de datos. Por lo que deberemos comprender R si queremos llegar lejos en la carrera de ciencia de datos pero requiere un tiempo mayor y cierta experiencia para hacerse con él.

Esto puede hacer que te sientas tentado a aprender ambos, o al menos comprender cómo usarlas sacando provecho de sus respectivas fortalezas. Y sucede que en cada artículo que encuentres en la red el debate entre Python y R siempre está confinado a sus posibilidades como lenguaje de programación pero debemos mirar un poco más allá. Lo que hace recomendable uno u otro lenguaje no es tanto su potencia, sino el uso que le vayamos a dar en nuestro proyecto. En definitiva. Usar más herramientas solo lo hará mejor como científico de datos.

Conclusión: Ambos idiomas son ganadores.


Compartir este post

También te puede interesar...

Curso de tratamiento de datos con Pandas y NumPy

Curso de tratamiento de datos con Pandas y NumPy

1 hora y 47 minutos · Curso

Entrar en el mundo del tratamiento de datos y no controlar las librerías de Panda y NumPy es inviable: en este curso te enseñamos los …

  • Big Data
Curso de tratamiento de datos con Pandas

Curso de tratamiento de datos con Pandas en Python

3 horas y 29 minutos · Curso

¿Ya te manejas con Python y quieres seguir avanzando para ser un profesional del procesamiento de datos? Entonces es momento de que te apuntes a …

  • Big Data
Curso de NumPy con Python

Curso de NumPy con Python

3 horas y 30 minutos · Curso

Con este curso de NumPy con Python aprenderás a tratar datos utilizando para ello la librería de Python NumPy, con una formación centrada en la …

  • Big Data
Artículos
Ver todos