Recibo un error de pandas cuando bash leer archivos de formato HDF5 que he creado con h5py. Me pregunto si estoy haciendo algo mal.
import h5py import numpy as np import pandas as pd h5_file = h5py.File('test.h5', 'w') h5_file.create_dataset('zeros', data=np.zeros(shape=(3, 5)), dtype='f') h5_file.close() pd_file = pd.read_hdf('test.h5', 'zeros')
da un error: TypeError: no puede crear un almacenador si el objeto no existe o si se pasa un valor
Intenté especificar el conjunto de claves en ‘/ ceros’ (como lo haría con h5py al leer el archivo) sin suerte.
Si uso pandas.HDFStore para leerlo, me devuelvo una tienda vacía:
store = pd.HDFStore('test.h5') >>> store File path: test.h5 Empty
No tengo problemas para leer el archivo recién creado con h5py:
h5_back = h5py.File('test.h5', 'r') h5_back['/zeros'] <HDF5 dataset "zeros": shape (3, 5), type "
Usando estas versiones:
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin pd.__version__ '0.16.2' h5py.__version__ '2.5.0'
Muchas gracias de antemano, Masha
He trabajado un poco en el módulo pytables
en pandas.io
y, por lo que sé, la interacción de pandas con archivos HDF está limitada a estructuras específicas que los pandas entienden. Para ver cómo se ven, puedes probar
import pandas as pd import numpy as np pd.Series(np.zeros((3,5),dtype=np.float32).to_hdf('test.h5','test')
Si abre ‘test.h5’ en HDFView , verá una ruta /test
con 4 elementos necesarios para recrear el DataFrame
.
Entonces, creo que su única opción para leer en matrices NumPy es leerlas directamente y luego convertirlas en objetos Pandas.