¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Data Scientist y lenguaje R
  3. R y Python
Extrait - Data Scientist y lenguaje R Autoformación en los aspectos básicos de la inteligencia artificial en el universo... (2a edición)
Extractos del libro
Data Scientist y lenguaje R Autoformación en los aspectos básicos de la inteligencia artificial en el universo... (2a edición) Volver a la página de compra del libro

R y Python

Una polémica estéril, pero real: ¿R o Python?

Ensamblador, Fortran, Basic, APL, Cobol, C, C++, SQL, Lisp, Pascal, Java, JavaScript, Python, Go, así como los distintos lenguajes de comandos o shells de Unix como Bash, forman una lista no exhaustiva de los lenguajes que hemos practicado con entusiasmo y determinación. Con este bagaje, podemos sacar algunas conclusiones sobre la elección personal de un lenguaje de programación:

  • Cuando adoptamos un lenguaje, adoptamos sobre todo su biotopo.

  • Es fácil aprender un nuevo lenguaje cuando ya se domina otro.

  • Puede parecer paradójico, pero el estudio de un nuevo lenguaje le permite mejorar sus prácticas sobre los demás.

  • Es mejor utilizar el lenguaje que le permita construir lo que quiere, en las mejores condiciones (biotopo y herramientas, adaptación de este biotopo a su objetivo, placer, velocidad de ejecución, etc.).

En cuanto al aspecto «carrera profesional» o lo conveniente que sea para su CV, elegir un lenguaje no es sencillo, pero le proponemos que considere lo siguiente:

  • Cuanto más raro es un lenguaje, menos oportunidades hay, pero más rentable es en general.

  • Es fundamental adquirir un conocimiento, al menos parcial, de varios lenguajes para poder encajar en los equipos.

  • En última instancia, lo que le permitirá tener una buena reputación es la fiabilidad de su codificación, su velocidad, la calidad de la documentación y la previsibilidad del comportamiento de su código, así como respetar los criterios de calidad que perciben sus compañeros.

  • En el marco estricto de las data sciences, las personas que se dedican a la informática usan con mayor frecuencia el lenguaje Python, mientras que las personas especializadas en temas estadísticos...

Ejemplos de códigos R y Python comparables

Vamos a mostrar que, en cuanto a la lectura de código, R y Python son similares. Obviamente, al escribir código o para códigos especializados, no siempre es trivial pasar de uno a otro sin error.

R y Python son dos lenguajes que implementan bien los paradigmas del lenguaje funcional. Los dos lenguajes permiten tratar los paradigmas de orientación a objetos de manera similar (en lo que respecta a R, lo hemos demostrado anteriormente en el libro). En data sciences, así como en programación matemática, la programación de objetos no es predominante.

Un algoritmo clásico se basa en una estructura de datos (vectores, tensores/matrices), escalares y booleanos. Tanto en Python como en R, las estructuras de lista se usan ampliamente para la programación de alto nivel, cuando se requiere un buen rendimiento, pero muchos data scientist nunca han tenido que usarlas (excepto para leerlas o construirlas cuando una función lo requiere).

Además, los dos lenguajes saben cómo explotar de manera eficiente estructuras de datos específicas administradas como dataframe (en Python usamos el paquete pandas para esto).

En esta sección, hemos elegido mostrarle que es posible adoptar un estilo de programación similar en Python y en R para convencerle de que muchos reflejos de programación adquiridos en uno de los dos contextos se pueden transferir al otro.

Podemos utilizar este apartado y el siguiente como los aspectos básicos sintácticos mínimos que es necesario conocer, en uno u otro de los lenguajes.

1. Códigos triviales

Los siguientes dos códigos son casi idénticos: en el código R usamos la flecha de asignación porque es una buena práctica, pero el mismo signo, igual que en Python, hubiera funcionado perfectamente.

# >>>> un código R <<<< 
a <-  1 
b <- 10 
c <-  2 * a + b 
c 
 
##> [1] 12 
 
c**2 
 
##> [1] 144 

# >>>> un código Python <<<< 
a = 1 
b = 10 
c = 2 * a + b 
c 
 
##> 12 
 
c**2 
 
##> 144 

2. Paquetes

En ambos lenguajes existen varias sintaxis para cargar o usar paquetes. A continuación se muestra los que tienen...

Acceder a Python desde R

1. Instalar e inicializar el contexto técnico

No dude en hacer un punto de situación de su contexto antes de comenzar su trabajo, verificando su configuración de Python y su correcto funcionamiento.

getwd()               # ¿dónde estoy? 
library(reticulate)   # carga de reticulate 

¿Python está disponible?

py_available(initialize = FALSE) 

¿Qué versión de Python estoy usando en mi máquina?

py_config()                          # la configuración python local 

python:         C:/Users/xxx/AppData/Local/r-miniconda/envs/ 
r-reticulate/python.exe 
libpython:      C:/Users/xxx/AppData/Local/r-miniconda/envs/ 
r-reticulate/python36.dll 
pythonhome:     C:/Users/xxx/AppData/Local/r-miniconda/envs/ 
r-reticulate 
version:        3.6.13 (default, Feb 19 2021, 05:17:09) [MSC v.1916  
64 bit (AMD64)] 
Architecture:   64bit 
numpy:          C:/Users/xxx/AppData/Local/r-miniconda/envs/ 
r-reticulate/Lib/site-packages/numpy 
numpy_version:  1.19.4 

¿Qué entornos virtuales conda tengo disponibles?

conda_list()    # posible configuración conda 

tf-gpu-initial  C:\\Users\\boss-hp\\.conda\\envs\\ 
tf-gpu-initial\\python.exe 
r-reticulate    C:\\Users\\boss-hp\\AppData\\Local\\r-miniconda\\ 
envs\\r-reticulate\\python.exe 

Compruebe si su entorno funciona:

os    <- reticulate::import("os")   # una pequeña prueba  
de funcionamiento 
os$listdir(".")                     # si todo va bien: dir local 

  [1] "00 R y ML.lnk" 
  [2] "00 LIBRO3 EN CURSO.lnk" 

Es correcto, es completamente operativo.

2. Interacciones R y Python desde el punto de vista de R

a. Compartir variables y ejecución de código Python en el biotipo R

Todo el código que ve aquí se ejecutó en RStudio, en archivos Rmarkdown; le recomendamos que haga lo mismo.

Primero crearemos un archivo Python en el que introducimos una línea...

Consideraciones sobre los casos complicados

Hemos utilizado como ejemplo las librerías de NLP para completar los elementos que se aportan previamente en el libro. La instalación y uso de estas librerías de Python no supuso ningún problema, sobre todo porque no cuentan con una interfaz gráfica.

La traducción de los formatos de datos y las funciones queda garantizada automáticamente por el paquete reticulate en la mayoría de los casos. Para casos complicados, o si desea crear estructuras Python directamente e intercambiarlas (como los diccionarios de Python, que son buenas estructuras), puede usar: r_to_py y py_to_rpy_dictpy_save_object y py_load_object, que utilizan el formato Python pickle, así como py_eval, py_run_xxx, py_set_item/py_get_itempy_func, py_call... Probablemente no necesite estas funciones muy a menudo, aunque son fáciles de usar, pero debe conocer su existencia para tratar ciertos casos especiales raros o cuando desee crear una interfaz particular usted mismo, con un módulo de Python.

Puede capturar la salida estándar de un programa Python usando py_capture_output.

Cuando el paquete de Python tiene una interfaz gráfica, algunas veces las cosas se complican en función del caso:

  • El paquete se utiliza para crear gráficos no interactivos, parecido a nuestros «plots»; entonces no hay problema, existen diferentes soluciones obvias...