2016-01-30 22 views
7

Ho questo gz file da dati.istat.it: all'interno è un file csv (con nome diverso) che voglio caricare direttamente in dataframe panda.Carica direttamente il file gz in pda dataframe

Se i decomprimere con 7zip i caricare facilmente con questo codice pd.read_csv("DCCV_OCCUPATIT_Data+FootnotesLegend_175b2401-3654-4673-9e60-b300989088bb.csv", sep="|", engine = "python")

come posso farlo senza decomprimere con 7zip Frist?

grazie mille!

+1

Si può provare a aggiungere il parametro 'compressione = 'gzip'' a' 'read_csv' o compressione =' infer'' – jezrael

+0

alternativa a @jezrael, si può fare la decompressione all'interno del tuo script Python con il' subprocess' modulo. – boardrider

risposta

5

È possibile utilizzare libreria zipfile:

import pandas as pd 
import zipfile 

z = zipfile.ZipFile('test/file.gz') 
print pd.read_csv(z.open("DCCV_OCCUPATIT_Data+FootnotesLegend_175b2401-3654-4673-9e60-b300989088bb.csv"), 
        sep="|", 
        engine = "python") 

Pandas supporta solo gzip e bz2 in read_csv:

compressione: { 'gzip', 'bz2', 'dedurre', None }, predefinito 'infer'

Per la decompressione immediata dei dati su disco. Se 'inferire', usa gzip o bz2 se filepath_or_buffer è una stringa che termina con '.gz' o '.bz2', rispettivamente, e nessuna decompressione in caso contrario. Impostare su Nessuno per nessuna decompressione.

+0

grazie mille! funziona molto bene! :) – SocraM

Problemi correlati