6 Importando y Exportando Datos
Mientras trabajamos en Julia, todo el espacio de trabajo se encuentra guardado en la memoria RAM del computador. Al cerrar el programa toda la memoria es liberada y la información eliminada. Julia puede cargar datos en su espacio de trabajo a partir de datos externos así como y guardar objetos de su espacio en diversos formatos.
6.1 Archivos de Texto Delimitados
En muchos contextos los datos se encuentran disponibles en archivos con formato texto (txt, csv, etc) y la columnas están delimitadas por algún delimitador particular (coma, punto y coma, TAB, etc). El paquete DelimitedFiles permite cargar la información contenida en estos archivos así como guardar información en los mismos. La sintaxis es:
variable = readdlm("nombre_archivo.txt", '\t')
por ejemplo carga el objeto y lo guarda en el espacio de trabajo comovariable
(el delimitador es TAB\t
).
Tomemos como ejemplo los datos del PIB de Chile contenidos en el archivos PIBChile.csv. La primera columna contiene los años (1960-2015) y la segunda el PIB. Ambas columnas están separadas por una coma.
57×2 Array{Any,2}:
"Periodo" "PIB Real"
1960 13326609
1961 14015469
1962 14612686
1963 15495153
1964 15868596
1965 16032079
1966 17792727
1967 18438409
1968 19108994
1969 19900155
1970 20287272
1971 22189810
⋮
2004 76987661
2005 81742969
2006 86397688
2007 90856522
2008 93847932
2009 92875262
2010 98219034
2011 103954673
2012 109627615
2013 113987063
2014 116125911
2015 118525235
Existen situaciones en que es útil guardar la información en archivos de texto (txt
). La sintaxis es:
writedlm("nombre_archivo.txt",variable)
guarda el objetovariable
.
A modelo de ejemplo vamos a crear una matriz de tamaño \(100 \times 5\) con números aleatorios extraídos de una distribución normal con media 100 y varianza 25) y los guardaremos en formato txt. Por defecto writedlm()
utiliza TAB como separador:
Leyendo el archivo recientemente guardado y almacenando la información en la matriz datos2
tenemos:
100×5 Array{Float64,2}:
13.8287 10.8976 8.26049 8.75127 4.23368
17.7328 8.30192 18.8235 22.2483 9.90805
11.6098 6.09058 9.63777 -3.26512 6.39597
7.65093 7.81686 9.8367 2.67658 2.55452
2.72766 17.5753 9.65465 15.2421 7.19189
12.8451 4.51063 14.1945 14.2131 4.78679
13.8229 7.02321 6.76504 17.4013 6.84775
14.2264 15.1383 9.14977 7.17395 9.86526
19.4375 12.6468 8.98879 12.2429 8.47713
9.17952 9.13437 2.21919 17.8467 4.42199
15.1595 11.1771 9.5009 5.77331 11.6807
7.93347 9.08409 9.88841 5.19173 17.7154
19.23 10.7895 13.2947 3.71131 10.9398
⋮
7.61887 21.3005 3.60374 12.3168 11.4841
5.48209 5.73024 8.82055 13.3749 7.65985
12.838 14.3745 16.9292 3.65063 5.63709
15.3026 5.45358 18.2453 8.53317 7.63567
5.79795 9.66012 15.2071 7.55389 13.1914
3.03716 13.4261 -0.326686 10.6121 12.8595
-1.30147 -0.873672 8.10321 11.1906 8.09467
15.0655 13.0568 5.35518 10.338 2.10848
8.80985 14.3378 5.7239 4.16434 12.6481
25.0655 7.83801 9.63486 6.95342 3.00243
18.1199 12.19 16.0499 13.3899 10.1646
5.29912 8.73701 7.9266 15.7756 9.56798
6.2 Importando Datos en Formato Excel
Julia también es capaz de leer datos desde Excel usando el paquete ExcelReaders. La sintaxis es:
variable = readxl("nombre_archivo.xls", "nombre_hoja!rango")
carga el la información contenida en el archivo nombre_archivo.xls (en la hojanombre_hoja
y en el rangorango
) y la guarda en el espacio de trabajo comovariable
.
Por ejemplo, importemos nuevamente la información del PIB de Chile pero ahora de una hoja Excel: PIBChile.xlsx.
# Nos aseguramos de estar en el directorio de trabajo correcto.
cd("/Users/mauriciotejada/Dropbox/Teaching/MAE - Matlab/Nootebooks Julia/")
56×2 Array{Any,2}:
1960.0 1.33266e7
1961.0 1.40155e7
1962.0 1.46127e7
1963.0 1.54952e7
1964.0 1.58686e7
1965.0 1.60321e7
1966.0 1.77927e7
1967.0 1.84384e7
1968.0 1.9109e7
1969.0 1.99002e7
1970.0 2.02873e7
1971.0 2.21898e7
1972.0 2.19179e7
⋮
2004.0 7.69877e7
2005.0 8.1743e7
2006.0 8.63977e7
2007.0 9.08565e7
2008.0 9.38479e7
2009.0 9.28753e7
2010.0 9.8219e7
2011.0 1.03955e8
2012.0 1.09628e8
2013.0 1.13987e8
2014.0 1.16126e8
2015.0 1.18525e8
Ahora podemos trabajar con los datos. Por ejemplo grafiquemos el PIB en niveles y en crecimientos:
plt_pib = plot(tiempo,pib, xlabel="Año", ylabel="Miles de Millones de Pesos Encadenados", title = "PIB Real de Chile",
color="blue", legend=false, linewidth = 2, grid = true)
display(plt_pib)
Ahora computemos la tasa de crecimiento:
plt_gpib = plot(tiempo[2:T],g, xlabel="Año", ylabel="Porcentaje",
title = "Crecimiento del PIB Real de Chile", color="blue", legend=false,
linewidth = 2, grid = true)
display(plt_gpib)
Crecimiento promedio entre 1960 y 2015:
4.161620220853264
6.3 Formato Julia Data JLD
En algunos contextos es útil guardar varias piezas de información (objetos) del espacio de trabajo. Guardar cada uno en un archivo de texto puede ser problemático cuando tenemos muchos objetos a guardar (1 objeto, 1 archivo de texto). El paquete JLD permite guardar múltiples objetos en un solo archivo (.jld
o Julia Data) y lo hace siguiendo la misma lógica de un Diccionario (guardando el par: clave - objeto). La sintaxis es:
save("nombre_archivo.jld", "clave1", objeto1, "clave2", objeto2, ...)
Un archivo jdl
puede ser cargado a memoria usando la sintaxis:
variable = load("nombre_archivo.jld")
En este caso variable
es un Diccionario.
Como ejemplo, creamos dos objeto: un entero t
y un vector z
y lo guardamos en miarchivo.jld
:
Dict{String,Any} with 2 entries:
"t" => 15
"z" => [1, 3]
2-element Array{Int64,1}:
1
3