2016-10-07 55 views
2

gzで圧縮された.csvファイルをdaskデータフレームに読み込む方法はありますか?dask Dataframeで圧縮された(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は、ASCIIファイルとして直接圧縮GZファイルを読み取ろうとしていることになりますので、ノンセンスになります。 – 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にはない)、バグかもしれない。しかし、それは圧縮= 'gzip'を使って動作しています。

すなわち:

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

ファイルがなければ、言うことはできません。エンコードlike # -*- coding: latin-1 -*-を設定するとどうなりますか?またはread_csvはパンダのベースであるため、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'を追加する方法 –

関連する問題