es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué aumenta drásticamente el tamaño del archivo HDF5 cuando segmento los datos en 30 subconjuntos más pequeños con 30 claves diferentes?

Tengo una serie de archivos hdf5 que contienen grandes data frames de pandas.
Un archivo típico tiene alrededor de 1000,000 filas. Utilizo complib=’blosc’, complevel=9 para la compresión.
Los archivos hdf5 originales se guardan como un archivo plano.

Luego intenté segmentar los data frames lógicamente en 30 data frames más pequeños y los guardé en el mismo archivo hdf5 con 30 llaves diferentes y la misma compresión.

Lo sorprendente es que los archivos con los 30 data frames más pequeños son 40 veces más grandes que el archivo plano.

El archivo hdf5 plano se guarda de la siguiente manera:

dfx.to_hdf(file_name, key='opp', mode='a', complib='blosc', complevel=9, append=True)

El archivo hdf5 segmentado se guarda de la siguiente manera:

for i in range(30):
    dfx_small[i].to_hdf(file_name, key='d'+str(i), mode='a', complib='blosc', complevel=9)

¿Estoy haciendo algo mal o es de esperar este aumento de tamaño?

Observación adicional:

Comparé todos los archivos hdf5 generados como 1) data frame plano vs 2) data frame dividido en 30 partes; parece que los archivos más grandes aumentan su tamaño de 8 a 10 veces cuando el data frame se guarda como 30 data frames más pequeños, mientras que los archivos más pequeños aumentan su tamaño de 100 a 1000 veces.
Luego experimenté guardando los archivos hdf5 con los 30 fragmentos con y sin compresión. Parece que cuando se colocan múltiples data frames con llaves únicas en el mismo archivo hdf5, la compresión casi no funciona. He probado todas las opciones de compresión con resultados similares.

Hay un error con la compresión al guardar archivos hdf5 con múltiples conjuntos de datos.

He agregado el problema número 45286.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basado en tus observaciones, parece que hay un error con la compresión al guardar archivos hdf5 con múltiples conjuntos de datos. Parece que la compresión es casi nula cuando se colocan varios dataframes con claves únicas en el mismo archivo hdf5. Esto explicaría por qué los archivos hdf5 segmentados son mucho más grandes que el archivo hdf5 plano, a pesar de haber utilizado los mismos parámetros de compresión.

    Podrías intentar experimentar con diferentes opciones de compresión o guardar cada dataframe segmentado en un archivo hdf5 separado para ver si esto resuelve el problema. Alternativamente, podrías informar del error al desarrollador de la biblioteca que estás utilizando y ver si tienen alguna sugerencia o solución.

Comments are closed.