Voglio usare bcolz per salvare un dataframe panda in un file.Salvare il dataframe dei panda su file utilizzando bcolz
ho provato:
Dopo di che, ct
contiene il dataframe compressa, ma non riesco a trovare come posso salvarlo in un file.
Voglio usare bcolz per salvare un dataframe panda in un file.Salvare il dataframe dei panda su file utilizzando bcolz
ho provato:
Dopo di che, ct
contiene il dataframe compressa, ma non riesco a trovare come posso salvarlo in un file.
È possibile utilizzare bcolz con contenitori di dati persistenti esattamente nello stesso modo di quelli in memoria. Si consiglia di dare un'occhiata a questo tutorial, che funziona con set di dati sul disco utilizzando panda/HDF5, PyTables puri, SQLite e bcolz:
https://github.com/FrancescAlted/EuroPython2015/blob/master/4-On-Disk-Tables.ipynb
Sembra che bcolz.ctable
abbia un metodo tohdf5
che è possibile utilizzare; tuttavia è necessario installare hdf5, pytables, ecc. In caso contrario, è possibile utilizzare pickle
, che è il solito modo di salvare su disco un oggetto Python generico.
A proposito, se sei solo interessato a comprimere i tuoi dati, potresti voler guardare un'opzione più low-tech come gzip
; la compressione sarà altrettanto buona se non migliore di un formato dati colonnare, che è più interessato a fare velocemente query contro i tuoi dati.
Hai semplicemente bisogno di specificare dove creare la tabella quando si legge nel dataframe, così:
import bcolz
import pandas as pd
df = pd.read_csv(open("mydata.csv", 'rb'), delimiter='\t')
ct = bcolz.ctable.fromdataframe(df, rootdir='dataframe.bcolz')
rootdir è una dir non un file – wyx
ho visto un'estensione bcolz chiamato bquery che utilizza la seguente istruzione: ct = bquery.ctable (rootdir = 'example.bcolz'). Quindi immagino che sia possibile salvare un dataframe panda in formato bcolz. E no, non sono solo interessato alla compressione; Voglio anche interrogare. –
hmm guardando i documenti sembra che 'carray' abbia un parametro' rootpath', ma 'ctable' non ... per qualche motivo .... quindi potresti usare un 'carray' invece (perderai comunque i nomi delle tue colonne) – maxymoo
' ctable' supporta anche l'argomento 'rootdir'. Vedi: http://bcolz.blosc.org/tutorial.html#tutorial-on-ctable-objects – Francesc