4  Módulos y librerías

Autor/a

Iraitz Montalbán

Un aspecto clave en los lenguajes de programación para ciencia de datos es el uso de librerías. Estas nos permiten atajar retos que otros ya han enfrentado y hacer uso de funciones ya creadas para el objeto.

La carga de módulos se hace mediante el comando using

using Modulo

Veremos algunos módulos base que nos ayudarán con ciertas structuras de datos complejas de manejar.

4.1 Fechas

Para poder gestionar fechas deberemos importar un módulo específico

using Dates

Existen dos tipos de fecha que deberemos manejar. Date para fechas sin tiempo informado

Date(2025, 7, 3) # año, mes, dia
2025-07-03

Y DateTime para fechas en las que dispongamos de hora.

DateTime(2025, 7, 3, 12, 0) # año, mes, dia, hora, minutos
2025-07-03T12:00:00

Podremos también indicarlos basado en formato, como segundo argumento de nuestros dos tipos base.

format = DateFormat("yyyymmdd")
Date("19870913", format)
1987-09-13

Intervalos

Como siempre con las fechas, podremos acceder a intervalos temporales (o periodos).

fecha = Date(2025, 7, 1) 
periodo = today() - fecha
6 days

Podemos ver que tipo soporta nuestra variable resultante.

typeof(periodo)
Day

La función today() nos devuelve un Day por lo que si queremos más precisión, deberemos convertirlo a DateTime y usar now() en nuestra comparativa para que la resta sea entre los mismos tipos.

fecha_hora_ms = DateTime(2025, 7, 1, 12, 1, 3, 120) # precisión de microsegundos 
lapso = now() - fecha_hora_ms
518776710 milliseconds
typeof(lapso)
Millisecond

4.2 Descargas

Existe otro módulo que nos vendrá muy bien a la hora de descargarnos ficheros.

using Downloads

Podremos indicarle a la función Downloads.download() la dirección desde la que descargar nuestro conjunto de datos.

url = "https://raw.githubusercontent.com/IraitzM/ciencia-datos-julia/refs/heads/main/parts/firststeps/ejemplo.txt"

fichero_proyecto = Downloads.download(url) # creamos un fichero temporal
"/tmp/jl_z6xk9a3mj0"

Y con funciones como readlines leer su contenido.

readlines(fichero_proyecto)
1-element Vector{String}:
 "Hola desde un fichero!"

Vemos que devuelve una estructura de Vector con cadenas de texto (String) con el contenido del fichero.

4.3 Aleatorios

Trabajar con números aleatorios es habitual en ciencia de datos, y para ello podemos recurrir al módulo Random

using Random

Random.seed!(1234)
Random.randn()
-0.3597289068234817

4.4 Paquetes habituales

En el caso de tratarse de módulos no disponibles como parte de la librería standard, deberemos recurrir al gestor de paquetes e instalarlas.

using Pkg;
Pkg.add("Libreria.jl")

Tal y como veíamos en la introducción estos paquetes serán añadidos a los dos ficheros clave que nos permiten reproducir nuestro entorno en otra máquina.

Las librerías que emplearemos en líneas generales son:

Todos estos paquetes y más están disponibles en https://juliapackages.com/.