2016-01-30 13 views
7

Mam to gz file z dati.istat.it: w jego pliku csv (z inną nazwą) chcę załadować bezpośrednio w ramce danych pandy.Załaduj bezpośrednio plik gz na pandasową ramkę danych

Jeśli mogę rozpakować z 7zip i łatwo załadować z tym kodem pd.read_csv("DCCV_OCCUPATIT_Data+FootnotesLegend_175b2401-3654-4673-9e60-b300989088bb.csv", sep="|", engine = "python")

jaki sposób mogę to zrobić bez unzip z 7zip Frist?

thx za dużo!

+1

Można spróbować dodać parametr 'kompresji =„gzip'' do '' read_csv' lub kompresja =”infer'' – jezrael

+0

przemian @jezrael można zrobić rozpakować z poziomu skryptu Pythona z' subprocess' moduł. – boardrider

Odpowiedz

5

Można użyć biblioteki 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") 

Pandy obsługuje tylko gzip i bz2 w read_csv:

kompresję: { 'gzip', 'bz2', 'wnioskować', żaden }, domyślnie 'infer'

Do dekompresji danych on-the-fly w locie. Jeśli "wnioskujesz", użyj gzip lub bz2, jeśli filepath_or_buffer jest łańcuchem kończącym się odpowiednio w ".gz" lub ".bz2", bez dekompresji. Ustaw na Brak bez dekompresji.

+0

thx was much! działa bardzo dobrze! :) – SocraM

Powiązane problemy