首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Pandas/Dask更快地读取压缩(.gz)文件?

如何使用Pandas/Dask更快地读取压缩(.gz)文件?
EN

Stack Overflow用户
提问于 2019-08-09 07:41:39
回答 3查看 2.6K关注 0票数 2

我有几个gzip文件(每个3.5 as ),到目前为止,我使用Pandas来读取这些文件,但它非常慢,我也尝试过Dask,但它似乎不支持gzip文件中断。有没有更好的方法来快速加载这些庞大的gzip文件?

Dask和Pandas代码:

代码语言:javascript
运行
复制
df = dd.read_csv(r'file', sample = 200000000000,compression='gzip')

我希望它能尽可能快地读取整个文件。

EN

回答 3

Stack Overflow用户

发布于 2019-08-09 21:17:23

gzip本质上是一种相当慢的压缩方法,而且(如您所说)不支持随机访问。这意味着,到达位置x的唯一方法是从头开始扫描整个文件,这就是为什么Dask在这种情况下不支持尝试并行化。

如果您至少想使用并行解析,那么最好的做法是首先解压缩整个文件,这样分块机制才有意义。您还可以将其拆分成几个文件,然后压缩每个文件,以便所需的总空间是相似的。

请注意,在理论上,一些支持分块随机访问的压缩机制,但我们还没有找到任何具有足够社区支持的压缩机制来在Dask中实现它们。

不过,最好的答案是以parquet或orc格式存储数据,这种格式具有内部压缩和分区功能。

票数 3
EN

Stack Overflow用户

发布于 2020-02-11 22:32:57

一种选择是为python使用package datatable:https://github.com/h2oai/datatable

例如,使用函数fread,它可以比pandas (到gzip)的读/写速度快得多

代码语言:javascript
运行
复制
import datatable as dt
df = dt.fread('file.csv.gz')

稍后,可以将其convert到pandas dataframe:

代码语言:javascript
运行
复制
df1 = df.to_pandas()

目前,datatable仅为available on Linux/Mac

票数 2
EN

Stack Overflow用户

发布于 2019-08-09 07:54:29

您可以尝试使用gzip库:

代码语言:javascript
运行
复制
import gzip
f = gzip.open('Your File', 'wb')
file_content = f.read()
print (file_content)

python: read lines from compressed text files

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57421905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档