2016-10-07 41 views
2

有沒有辦法讀取通過gz壓縮成dask數據幀的.csv文件?如何在一個dask數據框中讀取一個壓縮(gz)CSV文件?

我直接與

import dask.dataframe as dd 
df = dd.read_csv("Data.gz") 

嘗試過,但得到的Unicode錯誤(可能是因爲它是解釋壓縮字節)有"compression"參數,但compression = "gz"不會工作,我無法找到迄今爲止的任何文件。

隨着熊貓我可以直接讀取文件沒有問題,除了結果炸燬我的記憶;-)但如果我限制線數工作正常。

import pandas.Dataframe as pd 
df = pd.read_csv("Data.gz", ncols=100) 
+0

好,正規的大熊貓(非DASK)讀是好的,沒有任何編碼集,所以我的猜測是,DASK試圖直接讀取壓縮GZ文件爲ASCII文件,變得沒有意義。 – Magellan88

回答

2

熊貓當前的文件說:

compression : {‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None}, default ‘infer’

由於「推斷」是默認的,這可以解釋爲什麼它正在與熊貓。

DASK的上壓縮參數文件:

String like ‘gzip’ or ‘xz’. Must support efficient random access. Filenames with extensions corresponding to known compression algorithms (gz, bz2) will be compressed accordingly automatically

這將表明,它也應該推斷壓縮至少GZ。它沒有(並且它仍然不在0.15.3中)可能是一個錯誤。但是,它正在使用compression ='gzip'。

即:

import dask.dataframe as dd 
df = dd.read_csv("Data.gz", compression='gzip') 
1

沒有這個文件就很難說。如果你設置編碼like # -*- coding: latin-1 -*-?或者因爲read_csv是基於Pandas的,你甚至可以dd.read_csv('Data.gz', encoding='utf-8')。下面是Python的編碼列表:https://docs.python.org/3/library/codecs.html#standard-encodings

+0

不錯,主意不錯,但仍然出現錯誤: 'utf-8'編解碼器無法解碼位置1中的字節0x8b:無效的起始字節。 當我解壓縮在磁盤上的文件,並閱讀它幾乎可以工作,但投訴NaN類型 – Magellan88

+0

@ Magellan88:如何添加'error_bad_lines = False' –

相關問題