J'ai un jeu de données relativement volumineux (environ 8 Go) et je l'ai lu dans un bloc-notes jupyter en utilisant h5py.Stockez uniquement les données 'colonne' dans h5py sans les charger dans le fichier de données complet
La forme de l'ensemble de données finit par être quelque chose comme (50000000, 384). Mon ensemble de données idéal aurait cette transposée, de sorte que je peux regarder chaque «colonne» dans l'ensemble de données. La seule façon que j'ai pu obtenir pour obtenir chaque 'colonne' est d'indexer chaque colonne (ce qui est très lent et très gourmant en ressources processeur parce qu'elle va ligne par ligne dans les 50000000 lignes) ou de convertir les données h5 en np.array et transposer cela - qui est également très lent et inefficace.
Par exemple, j'ai un fichier h5:
chunk_file = h5py.File(chunk_fil_1, "r")
chunk_file["ex_dat"]
sortie:
HDF5 dataset "ex_dat": shape (50000000, 384)
Si je fais ceci:
len(chunk_file["ex_dat"][0])
sortie:
384
C'est là que je voudrais que toutes les sorties 50000000 de la colonne «0e».
Existe-t-il un moyen efficace d'indexer un fichier h5 pour des données de type 'colonne' sans lire chaque ligne? Ou d'autres alternatives pour lire ce grand ensemble de données? Mon but final est de stocker des «colonnes» individuelles dans un cadre de données pandas.
Que signifie 'arr = chunk_file [ "ex_dat"] [:, 0]' faire? Je m'attends à ce qu'il lise la colonne 0. Il sera plus lent que de lire 'chunk_file [" ex_dat "] [0,:]', mais devrait rester raisonnable. – hpaulj
Voulez-vous un 'Dataframe' avec 384 colonnes, et les 50 ... lignes? Vous aurez juste lu le tout. – hpaulj