Leer archivos HDF5 en Pandas DataFrame

Manav Narula 21 junio 2023
  1. Exportar un DataFrame a HDF5 usando Pandas
  2. Lea el archivo HDF5 en un marco de datos de Pandas
  3. Conclusión
Leer archivos HDF5 en Pandas DataFrame

El mundo está evolucionando y se le da mucha importancia al big data para almacenar y procesar grandes cantidades de datos. Debido a tal cantidad, han surgido nuevos formatos de archivo que han superado las opciones de almacenamiento tradicionales.

Uno de esos formatos es el archivo HDF5. Un archivo HDF5 significa Formato de datos jerárquicos versión 5; esta versión es la más utilizada.

Usamos este formato de archivo para almacenar grandes cantidades de datos y organizar los contenidos en una jerarquía específica. La ventaja de esto es que requiere menos espacio de almacenamiento y acceso rápido a partes de los datos.

Podemos trabajar eficientemente con tales archivos en Python con el módulo h5py. Incluso podemos usar la biblioteca de Pandas para cargar dichos datos en marcos de datos.

Este artículo demostrará cómo trabajar con archivos HDF5 utilizando la biblioteca Pandas en Python.

Exportar un DataFrame a HDF5 usando Pandas

Podemos exportar un objeto de marco de datos a un archivo HDF5 usando la función pandas.to_hdf(). Esta función escribe un marco de datos en un archivo HDF5 utilizando HDFStore.

Antes de usar esta función, necesitamos entender algunos parámetros cruciales.

Para especificar el identificador del grupo, usamos el parámetro clave. Podemos configurar diferentes modos para el archivo con el parámetro modo.

El modo w abre el archivo en modo escritura y borra el contenido anterior. El modo a abre el archivo en modo append y añade datos conservando el contenido anterior.

Ahora exportaremos un marco de datos a un archivo HDF5 usando esta función en el ejemplo a continuación.

df = pd.DataFrame({"C1": [10, 11, 12], "C2": [20, 21, 22]}, index=[0, 1, 2])
df.to_hdf("file_data.h5", key="df", mode="w")

El ejemplo anterior creará un archivo HDF5 con el contenido del marco de datos. Abrimos el archivo en modo escritura, borrando cualquier dato anterior.

Lea el archivo HDF5 en un marco de datos de Pandas

Tenemos la función pandas.read_hdf() que podemos usar directamente para leer dichos archivos. Sin embargo, no funcionará para todos los archivos HDF5.

La biblioteca de Pandas comprende solo algunas estructuras específicas de los archivos HDF5, por lo que esta función funciona solo con dichas estructuras.

Vea el código a continuación.

import pandas as pd

df = pd.read_hdf("file_data.h5")
print(df)

Producción :

   C1  C2
0  10  20
1  11  21
2  12  22

En el ejemplo anterior, leemos el archivo HDF5 creado en la función anterior usando la función read_hdf(). Como se discutió, no todas las estructuras para el archivo HDF5 se pueden importar directamente usando la función pandas.read_hdf().

Para tales casos, existe una solución rápida que puede funcionar. Se trata de utilizar los módulos h5py y numpy.

Usaremos el constructor h5py.File para leer el archivo HDF5 dado y almacenarlo en una matriz numpy usando la función numpy.array(). Luego, podemos mantener estos datos en un dataframe usando la función pandas.DataFrame().

El formato para esto se muestra a continuación.

import pandas as pd
import numpy as np
import h5py

df = pd.DataFrame(np.array(h5py.File("file_data.h5")["df"]))

Conclusión

Para concluir, discutimos cómo trabajar con archivos HDF5 con la biblioteca Pandas en Python. Comenzamos aprendiendo sobre el formato de archivo HDF5 y sus ventajas.

Exportamos un marco de datos a tales archivos usando el método to_hdf(). Usamos la función read_hdf() para leer dichos archivos.

Para estructuras complejas, podemos usar una combinación de funciones de la biblioteca h5py, NumPy y Pandas para leer los archivos en un marco de datos.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artículo relacionado - Pandas DataFrame