Ich habe einen relativ großen Datensatz (ca. 8GB), und lesen Sie es in einem jupyter Notebook mit h5py.Speichern Sie nur 'Spalte' Daten in h5py ohne Laden in der gesamten Datei
Die Form des Datasets endet etwa (50000000, 384). Mein idealer Datensatz hätte dies transponiert, so dass ich jede 'Spalte' im Datensatz betrachten kann. Die einzige Möglichkeit, mit der ich jede einzelne Spalte erreichen konnte, ist entweder die Indexierung für jede Spalte (was sehr langsam und CPU-intensiv ist, weil Zeile für Zeile in den 50000000 Zeilen liegt) oder die h5-Daten in ein np.array und transponiere das - was auch sehr langsam und ineffektiv ist.
Zum Beispiel, ich habe eine h5-Datei:
chunk_file = h5py.File(chunk_fil_1, "r")
chunk_file["ex_dat"]
Ausgang:
HDF5 dataset "ex_dat": shape (50000000, 384)
Wenn ich dies tun:
len(chunk_file["ex_dat"][0])
Ausgang:
384
Hier möchte ich meine Ausgabe alle 50000000 Erscheinungen der '0th' Spalte sein.
Gibt es eine effiziente Möglichkeit, eine h5-Datei für 'Spalten' wie Daten zu indizieren, ohne jede Zeile zu lesen? Oder andere Alternativen zum Lesen dieses großen Datensatzes? Mein Endziel ist es, einzelne 'Spalten' in einem Pandas-Datenrahmen zu speichern.
Was bedeutet 'arr = chunk_file [ "ex_dat"] [:, 0]' tun? Ich erwarte, dass es die 0-Spalte liest. Es ist langsamer als das Lesen von 'chunk_file [" ex_dat "] [0,:]', sollte aber immer noch sinnvoll sein. – hpaulj
Möchten Sie ein 'Dataframe' mit 384 Spalten und den 50 ... Zeilen? Du wirst nur die ganze Sache gelesen haben. – hpaulj