2016-10-07 6 views
2

Есть ли способ прочитать CSV-файл, который сжимается через gz в dask dataframe?Как читать сжатый (gz) CSV-файл inro a dask Dataframe?

Я пробовал его непосредственно

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

, но получаю сообщение об ошибке Юникода (вероятно, потому, что он интерпретирует сжатые байты) Существует параметр "compression" но compression = "gz" не будет работать, и я не могу найти любая документация до сих пор.

С помощью pandas я могу прочитать файл напрямую без проблем, кроме результата, взорвавшего мою память ;-), но если я ограничу количество строк, он отлично работает.

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

Ну, обычные панды (не DASK) читает нормально без какого-либо набора кодирования, так что мое предположение было бы, что Даск пытается прочитать сжатый файл GZ непосредственно в виде текстового файла и получает не-смысл. – Magellan88

ответ

2

Panda говорит:

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 основан на Пандах, вы можете даже dd.read_csv('Data.gz', encoding='utf-8'). Вот список кодировок Python: текущая документация https://docs.python.org/3/library/codecs.html#standard-encodings

+0

ну, хорошая идея, но все равно получите ошибку: 'utf-8' кодек не может декодировать байт 0x8b в позиции 1: недействительный стартовый байт. Когда я распаковываю файл на диск и читаю его, он почти работает, но для жалоб на типы NaN – Magellan88

+0

@ Magellan88: как насчет добавления 'error_bad_lines = False' –