Importando datos en Python (II)

Continuamos con la serie de posts sobre importación de datos en Python. En esta ocasión trataremos otras extensiones, como ficheros pickled, hojas de cálculo, ficheros SAS, Stata, HDF5 y Matlab.

 

Ficheros pickled

Son ficheros nativos de Python basados en la serialización, es decir, la conversión de un objeto Python en una cadena de bytes. Tienen extensión .pkl.

Contienen diferentes tipos de datos, cuya naturaleza hace que no sea obvio de qué forma almacenarlos (ej: listas y diccionarios).

Importamos la librería pickle.

Para abrir nuestro fichero usaremos un gestor de contexto con la sentencia with (con esto nos ahorraremos tener que cerrar manualmente el fichero después de leerlo).

El primer argumento que pasamos a la función open() es el nombre del fichero .pkl. El segundo determina en qué modo lo abrimos, en este caso ‘rb’ (lectura en modo binario, es decir, legible para la máquina).

Con la función load() de pickle cargamos los datos del fichero.

Hojas de cálculo Excel

Con la función ExcelFile() de pandas leemos archivos .xlsx.

Si obtenemos este mensaje de error: ImportError: No module named ‘xlrd’, debemos instalar esta librería, siguiendo el paso 3.

Usando el comando .sheet_names exploramos las hojas de cálculo del archivo.

Con el método parse() importamos como dataframe cualquier hoja del archivo cargado. Esta se especificará por su nombre o índice.

Podemos pasar argumentos adicionales:

skiprows: no incluye las filas cuyo índice pasamos en una lista (primera fila de datos es índice 0, la cabecera no cuenta).

names: en una lista pasamos los nombres de las columnas.

parse_cols: en una lista pasamos los índices de las columnas a seleccionar (primera columna es índice 0).

Python

Ficheros SAS

SAS es uno de los paquetes estadísticos más utilizados, sobre todo en los ámbitos de negocio y bioestadística. Sus archivos tienen extensión .sas7bdat.

Importamos la función SAS7BDAT de la librería sas7bdat.

En el contexto del archivo cargaremos su contenido en un dataframe aplicando el método to_data_frame() al objeto file.

fichero SAS

Ficheros Stata

Stata es otro software estadístico de gran uso en investigación en ciencias sociales. Los archivos tienen extensión .dta.

Importamos la librería pandas. En este caso no es necesario inicializar el gestor de contexto, sólo asignar a una variable el resultado de aplicar la función read_stata() al fichero .dta.

datos en Python

Ficheros HDF5

HDF5 es el acrónimo de Hierarchical Data Format version 5. Son ficheros de datos jerárquicos estructurados, pensados para almacenar gran cantidad de datos numéricos (del orden de cientos de GB o TB). HDF5 es capaz de escalar con facilidad al nivel de Exabyte (~1000TB).

Los archivos tienen extensión .hdf5.

Hemos de comprobar que tenemos la librería h5py instalada.

Con la función File() de dicha librería accedemos al archivo en formato lectura ‘r’.

Con type() comprobamos el tipo de archivo importado.

Podemos analizar la estructura jerárquica de un fichero HDF5 como se haría con un diccionario de Python usando el método .keys().

Cada uno de los resultados que devuelve es un grupo HDF, una especie de directorio que contiene información.

Accedemos al contenido de uno de los grupos o directorios mediante nombre_archivo[‘nombre_directorio’].value.

datos en Python

Ficheros Matlab

Matlab es un entorno de computación numérica, potente en el manejo de matrices y álgebra lineal, de uso extendido en el ámbito científico e ingeniería.

Los archivos tienen extensión .mat.

El workspace de Matlab puede contener datos de tipo cadena, numérico, vectores, matrices y otros objetos.

Al importar un archivo .mat en Python, este contendrá variables y objetos.

Comprobamos que tenemos la librería scipy.io instalada.

Con la función loadmat() cargamos el archivo en un objeto que es un diccionario (las claves son las variables y los valores los objetos asignados a las variables).

Con type() comprobamos que el tipo de archivo importado es un diccionario.

exportar datos en Python

Analizamos la estructura del diccionario usando el método .keys(), esto muestra las claves.

Vemos qué tipo de objeto se ha asignado a una clave con:

type(nombre_diccionario[‘nombre_clave’])

El resultado es una matriz, consultamos sus dimensiones con la función shape() de la librería NumPy.

Para acceder al contenido de un objeto (en este caso una matriz):

nombre_diccionario[‘nombre_clave’][índice_filas,índice_cols]

Nota: los ficheros que se han usado como muestra proceden de diferentes bancos de datos de acceso libre.

• demo.xls: se ha copiado en un único libro las hojas procedentes de all_alpha_13.xlsx, hsCenterList.xls,
IHS_Health_Facilities.xls.

• demo.sas7bdat: airline.sas7bdat

• demo.dta: airline.dta

• demo.hdf5: h5ex_d_nbit.hdf5

• demo.mat: data1.mat

 

En el próximo post abordaremos la importación de bases de datos relacionales. Keep on importing data!!!

Leave Comment

Your email address will not be published. Required fields are marked *