Как мне прочитать сжатый CSV-файл в Julia? - PullRequest
0 голосов
/ 01 октября 2018

Я перепробовал много библиотек, но, похоже, я не могу сопоставить типы.

Типичная попытка:

using SomeLib, CSV
fh = SomeLib.open("gzipped_file.gz")
CSV.read(fh) # error

Пример:

using CodecZlib
CSV.read(GzipDecompressorStream(open("gzipped_file.gz")))
# ERROR: MethodError: no method matching position(::TranscodingStreams.TranscodingStream{GzipDecompressor,IOStream})

Ответы [ 4 ]

0 голосов
/ 08 мая 2019

Мой новый пакет TableReader.jl поддерживает прозрачную декомпрессию gzip, xz и zstd.Итак, следующий код будет работать так, как вы ожидаете:

using TableReader

readcsv("path/to/file.csv.gz")
readcsv("path/to/file.csv.xz")
readcsv("path/to/file.csv.zst")
0 голосов
/ 13 марта 2019

Добавив к ответу Богумила, вы также можете сделать следующее:

using CSV
using GZip

df = GZip.open("some_file.csv.gz", "r") do io
    CSV.read(io)
end
0 голосов
/ 21 марта 2019

Еще проще:

using CSVFiles, DataFrames
df = DataFrame(load(File(format"CSV", "data.csv.gz")))
0 голосов
/ 01 октября 2018

Тем временем вы можете использовать CSVFiles.jl:

using CSVFiles, DataFrames, FileIO

open("yourfile.csv.gz") do io
    load(Stream(format"CSV", GzipDecompressorStream(io))) |> DataFrame
end
...