Capítulo 1. Introducción Introducción

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Este libro trata sobre cómo hacer ciencia de datos en la línea de comandos. Mi objetivo es convertirte en un científico de datos más eficiente y productivo enseñándote a aprovechar el poder de la línea de comandos.

El hecho de que la ciencia de los datos y la línea de comandos figuren en el título del libro requiere una explicación. ¿Cómo puede una tecnología de más de 50 años de antigüedad1 para un campo que sólo tiene unos pocos años?

Hoy en día, los científicos de datos pueden elegir entre una abrumadora colección de apasionantes tecnologías y lenguajes de programación. Python, R, Julia y Apache Spark son sólo algunos ejemplos. Puede que ya tengas experiencia en uno o más de ellos. Y si es así, ¿por qué debería seguir importándote la línea de comandos para hacer ciencia de datos? ¿Qué tiene que ofrecer la línea de comandos que no ofrezcan estas otras tecnologías y lenguajes de programación?

Son preguntas válidas. En este capítulo inicial responderé a estas preguntas del siguiente modo. En primer lugar, proporciono una definición práctica de la ciencia de datos que servirá de columna vertebral de este libro. En segundo lugar, enumero cinco ventajas importantes de la línea de comandos. Al final de este capítulo, espero haberte convencido de que, efectivamente, merece la pena aprender la línea de comandos para hacer ciencia de datos.

La Ciencia de Datos es OSEMN

El campo de la ciencia de datos aún está en pañales y, como tal, existen varias definiciones de lo que abarca. A lo largo de este libro empleo una definición muy práctica ideada por Hilary Mason y Chris H. Wiggins.2 Definen la ciencia de datos según los cinco pasos siguientes (1) obtención de datos, (2) depuración de datos, (3) exploración de datos, (4) modelado de datos e (5) interpretación de datos. Juntos, estos pasos forman el modelo OSEMN (se pronuncia impresionante). Esta definición sirve de columna vertebral de este libro porque cada paso (excepto el paso 5, interpretación de datos, que explicaré en breve) tiene su propio capítulo.

Aunque los cinco pasos se comentan de forma lineal e incremental, en la práctica es muy habitual ir y venir entre ellos o realizar varios pasos al mismo tiempo.La Figura 1-1 ilustra que hacer ciencia de datos es un proceso iterativo y no lineal. Por ejemplo, una vez que has modelado tus datos y has observado los resultados, puedes decidir volver al paso de depuración para ajustar las características del conjunto de datos.

A diagram shows expectation and reality versions of the five-step data science model.
Figura 1-1. Hacer ciencia de datos es un proceso iterativo y no lineal

En las páginas siguientes, explico lo que implica cada paso.

Obtención de datos

Sin datos, hay poca ciencia de datos que puedas hacer. Así que el primer paso es obtener datos. A menos que tengas la suerte de poseer ya datos, puede que necesites hacer una o más de las siguientes cosas:

  • Descargar datos de otra ubicación (por ejemplo, una página web o un servidor)

  • Consulta datos de una base de datos o API (por ejemplo, MySQL o Twitter)

  • Extraer datos de otro archivo (por ejemplo, un archivo HTML o una hoja de cálculo)

  • Genera datos tú mismo (por ejemplo, leyendo sensores o haciendo encuestas)

En el Capítulo 3, hablo de varios métodos para obtener datos utilizando la línea de comandos. Lo más probable es que los datos obtenidos estén en formato de texto plano, CSV, JSON, HTML o XML. El siguiente paso es depurar estos datos.

Datos de fregado

No es raro que los datos obtenidos tengan valores que faltan, incoherencias, errores, caracteres raros o columnas sin interés. En tales casos, tienes que fregar, o limpiar, los datos antes de poder hacer algo interesante con ellos. Entre las operaciones de fregado más comunes están:

  • Líneas de filtrado

  • Extraer determinadas columnas

  • Sustitución de valores

  • Extraer palabras

  • Tratamiento de valores omitidos y duplicados

  • Convertir datos de un formato a otro

Aunque a los científicos de datos nos encanta crear interesantes visualizaciones de datos y modelos perspicaces (pasos 3 y 4 del modelo OSEMN), normalmente se dedica mucho esfuerzo a obtener y depurar primero los datos necesarios (pasos 1 y 2). En Data Jujitsu(O'Reilly), DJ Patil afirma que "el 80% del trabajo en cualquier proyecto de datos consiste en depurar los datos" En el Capítulo 5, demuestro cómo la línea de comandos puede ayudar a realizar esasoperaciones de depuración de datos.

Explorar los datos

Una vez que hayas depurado tus datos de , estás listo para explorarlos. Aquí es donde se pone interesante, porque es cuando exploras cuando realmente llegas a conocer tus datos. En el Capítulo 7 te muestro cómo se puede utilizar la línea de comandos para:

  • Mira tus datos

  • Obtén estadísticas de tus datos

  • Crea visualizaciones perspicaces

Las herramientas de la línea de comandos utilizadas en el capítulo 7 son csvstat y rush.

Modelado de datos

Si quieres explicar tus datos de o predecir lo que va a ocurrir, probablemente quieras crear un modelo estadístico de los datos. Entre las técnicas para crear un modelo están la agrupación, la clasificación, la regresión y la reducción de la dimensionalidad. La línea de comandos no es adecuada para programar un nuevo tipo de modelo desde cero. Sin embargo, es muy útil poder construir un modelo desde la línea de comandos. En el Capítulo 9 presentaré varias herramientas de línea de comandos que construyen un modelo localmente o emplean una API para realizar el cálculo en la nube.

Interpretar los datos

El último paso del modelo OSEMN, y quizás el más importante , es la interpretación de los datos. Este paso implica:

  • Sacar conclusiones de tus datos

  • Evaluar el significado de tus resultados

  • Comunicar tus resultados

Para ser honesto, el ordenador es de poca utilidad aquí, y la línea de comandos no entra realmente en juego en esta fase. Una vez que hayas llegado a este paso, depende de ti. Este es el único paso del modelo OSEMN que no tiene su propio capítulo. En su lugar, te remito al libro Thinking with Data de Max Shron (O'Reilly).

Capítulos del Intermezzo

Además de los capítulos que cubren los pasos de la OSEMN, hay cuatro capítulos intermedios. Cada uno trata un tema más general relativo a la ciencia de datos y cómo se emplea la línea de comandos para ello. Estos temas son aplicables a cualquier paso del proceso de la ciencia de datos.

En el Capítulo 4, hablo de cómo crear herramientas reutilizables para la línea de comandos. Estas herramientas personales pueden proceder de comandos largos que hayas escrito en la línea de comandos o de código existente que hayas escrito en, por ejemplo, Python o R. Ser capaz de crear tus propias herramientas te permite ser más eficiente y productivo.

Dado que la línea de comandos es un entorno interactivo para hacer ciencia de datos, puede resultar difícil hacer un seguimiento de tu flujo de trabajo. En el Capítulo 6, muestro una herramienta de línea de comandos llamada make, que te permite definir tu flujo de trabajo de ciencia de datos en términos de tareas y las dependencias entre ellas. Esta herramienta aumenta la reproducibilidad de tu flujo de trabajo, no sólo para ti, sino también para tus colegas y compañeros.

En el Capítulo 8, explico cómo tus comandos y herramientas pueden acelerarse ejecutándolos en paralelo. Utilizando una herramienta de línea de comandos llamada GNU Parallel, puedes aplicar herramientas de línea de comandos a conjuntos de datos muy grandes y ejecutarlos en varios núcleos o incluso en máquinas remotas.

En el Capítulo 10, hablo de cómo emplear la potencia de la línea de comandos en otros entornos y lenguajes de programación, como R, RStudio, Python, Jupyter Notebooks e incluso Apache Spark.

¿Qué es la línea de comandos?

Antes de hablar de por qué deberías utilizar la línea de comandos para la ciencia de datos, echemos un vistazo al aspecto real de la línea de comandos (puede que ya te resulte familiar). Las figuras 1-2 y 1-3 muestran una captura de pantalla de la línea de comandos tal y como aparece por defecto en macOS y Ubuntu, respectivamente. Ubuntu es una distribución particular de GNU/Linux , y es la que utilizaré en este libro.

A screenshot of the command line window on Mac O S.
Figura 1-2. Línea de comandos en macOS
A screenshot of the Command line window on Ubuntu.
Figura 1-3. Línea de comandos en Ubuntu

La ventana que se muestra en las dos capturas de pantalla se llama terminal. Es el programa que te permite interactuar con el intérprete de comandos. Es el intérprete de comandos el que ejecuta los comandos que escribes. En el Capítulo 2 explico estos dos términos con más detalle.

Nota

No voy a mostrar la línea de comandos de Microsoft Windows (también conocida como Símbolo del sistema o PowerShell), porque es fundamentalmente diferente e incompatible con los comandos que se presentan en este libro. La buena noticia es que puedes instalar una imagen de Docker en Microsoft Windows para poder seguirla. La instalación de la imagen de Docker se explica en el Capítulo 2.

Interactuar con tu ordenador escribiendo comandos es muy diferente de hacerlo a través de una interfaz gráfica de usuario (GUI). Si estás acostumbrado sobre todo a procesar datos en, por ejemplo, Microsoft Excel, este enfoque puede parecer intimidante al principio. No tengas miedo. Créeme cuando te digo que te acostumbrarás a trabajar en la línea de comandos muy rápidamente.

En este libro, los comandos que escribo y la salida que generan se muestran como texto. Por ejemplo, el contenido del terminal en las dos capturas de pantalla tendría este aspecto:

$ whoami
dst
 
$ date
Tue Jun 29 02:25:17 PM CEST 2021
 
$ echo 'The command line is awesome!' | cowsay -f tux
 ______________________________
< The command line is awesome! >
 ------------------------------
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/
 
 
$

Verás que cada comando es precedido por un signo de dólar ($El símbolo de sistema de las dos capturas de pantalla muestra más información, concretamente el nombre de usuario, la fecha y un pingüino. Es una convención mostrar sólo un signo de dólar en los ejemplos, porque el símbolo de sistema (1) puede cambiar durante una sesión (cuando vas a un directorio diferente), (2) puede ser personalizado por el usuario (por ejemplo, también puede mostrar la hora o la rama actual git3 en la que estás trabajando), y (3) es irrelevante para los propios comandos.

En el próximo capítulo explicaré mucho más sobre los conceptos esenciales de la línea de comandos. Pero antes, es hora de explicar por qué deberías aprender a utilizar la línea de comandos para hacer ciencia de datos.

¿Por qué la Ciencia de Datos en la Línea de Comandos?

La línea de comandos tiene muchas grandes ventajas que realmente pueden convertirte en un científico de datos más eficiente y productivo. Agrupando grosso modo las ventajas, la línea de comandos es ágil, aumentativa, escalable, extensible y ubicua.

La línea de comandos es ágil

La primera ventaja de la línea de comandos es que te permite ser ágil. La ciencia de datos tiene una naturaleza muy interactiva y exploratoria, y el entorno en el que trabajas tiene que permitirlo. La línea de comandos lo consigue por dos medios.

En primer lugar, la línea de comandos proporciona el denominado bucle de lectura-evaluación-impresión (REPL). Esto significa que escribes un comando, pulsas Intro y el comando se evalúa inmediatamente. Un REPL suele ser mucho más cómodo para hacer ciencia de datos que el ciclo de edición-compilación-ejecución-depuración asociado a los scripts, los programas grandes y, digamos, los trabajos de Hadoop. Tus comandos se ejecutan inmediatamente, se pueden detener a voluntad y se pueden cambiar rápidamente. Este breve ciclo de iteración te permite realmente jugar con tus datos.

En segundo lugar, la línea de comandos está muy cerca del sistema de archivos. Como los datos son el ingrediente principal para hacer ciencia de datos, es importante poder trabajar fácilmente con los archivos que contienen tu conjunto de datos. La línea de comandos ofrece muchas herramientas prácticas para ello.

Aumenta la línea de comandos

La línea de comandos se integra bien con otras tecnologías. Sea cual sea la tecnología que incluya actualmente tu flujo de trabajo de ciencia de datos (ya sea R, Python o Excel), debes saber que no te estoy sugiriendo que abandones ese flujo de trabajo. En lugar de eso, considera la línea de comandos como una tecnología de aumento que amplifica las tecnologías que empleas actualmente. Puede hacerlo de tres maneras.

En primer lugar, la línea de comandos puede actuar como pegamento entre muchas herramientas diferentes de ciencia de datos. Una forma de pegar herramientas es conectar la salida de la primera herramienta a la entrada de la segunda. En el Capítulo 2 explico cómo funciona esto.

En segundo lugar, a menudo puedes delegar tareas a la línea de comandos desde tu propio entorno. Por ejemplo, Python, R y Apache Spark te permiten ejecutar herramientas de línea de comandos y capturar su salida. Lo demuestro con ejemplos en el Capítulo 10.

En tercer lugar, puedes convertir tu código (por ejemplo, un script de Python o R) en una herramienta reutilizable de la línea de comandos. De ese modo, ya no importa el lenguaje en el que esté escrito , sino que se puede utilizar desde la línea de comandos directamente o desde cualquier entorno que se integre con la línea de comandos, como se menciona en el párrafo anterior. En el Capítulo 4 explico cómo hacerlo.

Al final, cada tecnología tiene sus puntos fuertes y sus puntos débiles, por lo que es bueno conocer varias tecnologías y utilizar la más adecuada para la tarea en cuestión. A veces eso significa utilizar R, a veces la línea de comandos y a veces incluso lápiz y papel. Al final de este libro tendrás una sólida comprensión de cuándo debes utilizar la línea de comandos y cuándo es mejor que sigas con tu lenguaje de programación o entorno informático estadístico favorito.

La línea de comandos es escalable

Como ya he dicho antes, trabajar con en la línea de comandos es muy diferente de utilizar una GUI. En la línea de comandos haces las cosas tecleando, mientras que con una GUI las haces señalando y haciendo clic con el ratón.

Todo lo que escribes manualmente en la línea de comandos también se puede automatizar mediante scripts y herramientas. Esto hace que sea muy fácil volver a ejecutar tus comandos si cometiste un error, cuando los datos de entrada han cambiado o porque tu colega quiere realizar el mismo análisis. Además, tus comandos se pueden ejecutar a intervalos específicos, en un servidor remoto y en paralelo sobre muchos trozos de datos (más sobre esto en el Capítulo 8).

Como la línea de comandos es automatizable, se convierte en escalable y repetible. No es sencillo automatizar el apuntar y hacer clic, lo que hace que una interfaz gráfica de usuario sea un entorno menos adecuado para hacer ciencia de datos escalable y repetible.

La línea de comandos es extensible

La propia línea de comandos se inventó en hace más de 50 años. Su funcionalidad básica ha permanecido prácticamente inalterada, pero sus herramientas, que son los caballos de batalla de la línea de comandos, se desarrollan a diario.

La propia línea de comandos es agnóstica al lenguaje. Esto permite que las herramientas de la línea de comandos se escriban en muchos lenguajes de programación diferentes. La comunidad de código abierto está produciendo muchas herramientas de línea de comandos gratuitas y de gran calidad que podemos utilizar para la ciencia de datos.

Estas herramientas de la línea de comandos pueden funcionar juntas, lo que hace que la línea de comandos sea muy flexible. También puedes crear tus propias herramientas, lo que te permitirá ampliar la funcionalidad efectiva de la línea de comandos.

La línea de comandos está omnipresente

Como la línea de comandos viene en con cualquier sistema operativo tipo Unix, incluidos Ubuntu Linux y macOS, se puede encontrar en muchos sitios. Además, el 100% de los quinientos superordenadores más importantes funcionan con Linux.4 Así que si alguna vez te haces con uno de esos superordenadores (o si alguna vez te encuentras en Parque Jurásico con las cerraduras de las puertas sin funcionar), ¡será mejor que conozcas bien la línea de comandos!

Pero Linux no sólo funciona en superordenadores, sino también en servidores, ordenadores portátiles y sistemas integrados. Hoy en día, muchas empresas ofrecen computación en nube, donde puedes lanzar fácilmente nuevas máquinas sobre la marcha. Si alguna vez te conectas a una máquina de este tipo (o a un servidor en general), es casi seguro que llegarás a la línea de comandos.

También es importante tener en cuenta que la línea de comandos no es sólo una exageración. Esta tecnología existe desde hace más de cinco décadas, y estoy convencido de que está aquí para quedarse otras cinco. Por tanto, aprender a utilizar la línea de comandos (para la ciencia de datos y en general) es una inversión que merece la pena.

Resumen

En este capítulo te he presentado el modelo OSEMN para hacer ciencia de datos, que utilizo como guía a lo largo del libro. Te he proporcionado algunos antecedentes sobre la línea de comandos Unix y espero haberte convencido de que es un entorno adecuado para hacer ciencia de datos. En el próximo capítulo te mostraré cómo empezar instalando los conjuntos de datos y las herramientas, y te explicaré los conceptos fundamentales.

Para seguir explorando

  • El libro UNIX: A History and a Memoir de Brian W. Kernighan (autoeditado) cuenta la historia de Unix, explicando qué es, cómo se desarrolló y por qué es importante.

  • En 2018, hice una presentación titulada "50 razones para aprender la Shell para hacer ciencia de datos" en Strata Londres. Puedes leer las diapositivas si necesitas aún más convencimiento.

  • El breve pero dulce libro Thinking with Data (Pensar con datos ) de Max Shron (O'Reilly) se centra en el por qué en lugar del cómo y proporciona un marco para definir tu proyecto de ciencia de datos que te ayudará a formular las preguntas adecuadas y a resolverlos problemas correctos.

1 El desarrollo del sistema operativo UNIX comenzó en 1969. Desde el principio contó con una línea de comandos. El importante concepto de tuberías, que trataré en "Conceptos esenciales de Unix", se añadió en 1973.

2 "Una taxonomía de la ciencia de datos", dataists (blog), 25 de septiembre de 2010, http://www.dataists.com/2010/09/a-taxonomy-of-data-science.

3 Linus Torvalds y Junio C. Hamano, git - the Stupid Content Tracker, versión 2.25.1, 2021, https://git-scm.com.

4 Véase TOP500, que lleva la cuenta de cuántos superordenadores ejecutan Linux.

Get Ciencia de datos en la línea de comandos, 2ª edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.