Vim até aqui para procurar ajuda, porque preciso extrair dados de vários arquivos .HDF5 que estão em uma pasta e colocá-los em um dataframe único do Pandas.
Compartilhei os arquivos em meu Google Drive para seja fácil acessá-los:
O meu código está abaixo e, com a minha lógica de programação, está retornando erro abaixo. Agradeço a ajuda de vocês!
<INÍCIO CÓDIGO>
# Imports
import glob
import h5py
import numpy as np
import pandas as pd
# Cria uma lista para armazenar os DataFrames de cada arquivo HDF5:
dfs = []
# Obtém a lista de arquivos HDF5 de treino usando glob:
arquivos_hdf5_treino = glob.glob('../Data/train/*.hdf5')
# Visualiza a lista de arquivos:
arquivos_hdf5_treino
['../Data/OriginalDatasets/train\\001121a05.hdf5',
'../Data/OriginalDatasets/train\\00a6db666.hdf5',
'../Data/OriginalDatasets/train\\00f36a6ac.hdf5',
'../Data/OriginalDatasets/train\\0197bacf8.hdf5',
'../Data/OriginalDatasets/train\\01b8b67f3.hdf5',
'../Data/OriginalDatasets/train\\01dba9731.hdf5',
'../Data/OriginalDatasets/train\\02887d232.hdf5',
'../Data/OriginalDatasets/train\\02c8f43f3.hdf5',
'../Data/OriginalDatasets/train\\0367dc82c.hdf5',
'../Data/OriginalDatasets/train\\0517ef7fe.hdf5',
'../Data/OriginalDatasets/train\\05c0675fe.hdf5',
'../Data/OriginalDatasets/train\\05cdc0769.hdf5',
'../Data/OriginalDatasets/train\\05f0aef12.hdf5',
'../Data/OriginalDatasets/train\\067b3fb4b.hdf5',
'../Data/OriginalDatasets/train\\06e321c6e.hdf5',
'../Data/OriginalDatasets/train\\08a060dad.hdf5',
'../Data/OriginalDatasets/train\\08c444d66.hdf5',
'../Data/OriginalDatasets/train\\0920a4276.hdf5',
'../Data/OriginalDatasets/train\\09531cde3.hdf5',
'../Data/OriginalDatasets/train\\097370861.hdf5',
'../Data/OriginalDatasets/train\\09e55aeba.hdf5',
'../Data/OriginalDatasets/train\\09ecddbba.hdf5',
'../Data/OriginalDatasets/train\\0ba188c57.hdf5',
'../Data/OriginalDatasets/train\\0bc8216f2.hdf5',
'../Data/OriginalDatasets/train\\0c55d030c.hdf5',
'../Data/OriginalDatasets/train\\0d0ad0b19.hdf5',
'../Data/OriginalDatasets/train\\0dc4c8ed0.hdf5',
'../Data/OriginalDatasets/train\\0e39a18bf.hdf5',
'../Data/OriginalDatasets/train\\0e60d4893.hdf5',
'../Data/OriginalDatasets/train\\0e66d0460.hdf5',
'../Data/OriginalDatasets/train\\0eb30f7c4.hdf5',
'../Data/OriginalDatasets/train\\0ebe28dd5.hdf5',
'../Data/OriginalDatasets/train\\0f53d8b96.hdf5',
'../Data/OriginalDatasets/train\\10dfa2ed6.hdf5',
'../Data/OriginalDatasets/train\\10eaa1cb2.hdf5',
'../Data/OriginalDatasets/train\\1185806d8.hdf5',
'../Data/OriginalDatasets/train\\119610501.hdf5',
'../Data/OriginalDatasets/train\\123594dc7.hdf5',
'../Data/OriginalDatasets/train\\1282f6c1f.hdf5',
'../Data/OriginalDatasets/train\\12f0fd6fd.hdf5',
'../Data/OriginalDatasets/train\\12f9824fa.hdf5',
'../Data/OriginalDatasets/train\\13a23148f.hdf5',
'../Data/OriginalDatasets/train\\13df1746e.hdf5',
'../Data/OriginalDatasets/train\\147cc5f92.hdf5',
'../Data/OriginalDatasets/train\\1510f75f9.hdf5',
'../Data/OriginalDatasets/train\\1523dcd0c.hdf5',
'../Data/OriginalDatasets/train\\1607fd753.hdf5',
'../Data/OriginalDatasets/train\\1748ad051.hdf5',
'../Data/OriginalDatasets/train\\177d1a100.hdf5',
'../Data/OriginalDatasets/train\\1796d0836.hdf5']
# Inicializando o a contagem do número de arquivos hdf5:
numArquivo = 1
# Iterando sobre os arquivos hdf5 de Treino e extraindo dados:
for arquivo_hdf5 in arquivos_hdf5_treino:
with h5py.File(arquivo_hdf5, 'r') as arquivo:
# Imprimindo na tela a contagem do número de arquivos hdf5:
print(f'Arquivo {numArquivo}')
# Criando a lista de chaves nos arquivos HDF5:
keyList = list(arquivo.keys())[0]
# Criando a lista de variáveis nos arquivos HDF5:
varList = list(arquivo[keyList])
# Imprimindo todos os conjuntos de dados, também conhecidos como "keys" ou "chaves" em português:
print(f'Chave em {arquivo_hdf5}: {keyList}')
# Iterando sobre os conjuntos de dados no arquivo
for key in arquivo.keys():
# Imprimindo na tela as variáveis nos chaves:
print(f'Variáveis na chave {key}: {varList}')
# Extraindo os conjuntos de dados:
dados = arquivo[key][:]
# Imprimindo na tela o conjunto de dados:
print(f'Dados no conjunto de dados {key}: {dados}')
# Convertendo os dados para um DataFrame do Pandas:
df = pd.DataFrame(dados)
# Adicionando o DataFrame à lista:
dfs.append(df)
# Imprimindo na tela uma linha em branco:
print()
# Incrementando o número de arquivos:
numArquivo += 1
# Concatenando os DataFrames em um único DataFrame:
resultado_final = pd.concat(dfs, ignore_index=True)
# Visualizando as primeiras linhas:
print(resultado_final.head())
Arquivo 1
Chave em ../Data/OriginalDatasets/train\001121a05.hdf5: 001121a05
Variáveis na chave 001121a05: ['H1', 'L1', 'frequency_Hz']
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[7], line 27
24 print(f'Variáveis na chave {key}: {varList}')
26 # Extraindo os conjuntos de dados:
---> 27 dados = arquivo[key][:]
29 # Imprimindo na tela o conjunto de dados:
30 print(f'Dados no conjunto de dados {key}: {dados}')
File h5py\_objects.pyx:54, in h5py._objects.with_phil.wrapper()
File h5py\_objects.pyx:55, in h5py._objects.with_phil.wrapper()
File c:\Opt\Anaconda3\Lib\site-packages\h5py\_hl\group.py:330, in Group.__getitem__(self, name)
328 oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
329 else:
--> 330 raise TypeError("Accessing a group is done with bytes or str, "
331 " not {}".format(type(name)))
333 otype = h5i.get_type(oid)
334 if otype == h5i.GROUP:
TypeError: Accessing a group is done with bytes or str, not <class 'slice'>
<FIM CÓDIGO>