首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将大文件读取为Pandas dataframe?

如何将大文件读取为Pandas dataframe?
EN

Stack Overflow用户
提问于 2022-07-31 14:43:20
回答 2查看 183关注 0票数 2

我想读取一个大文件(4GB)作为一个Pandas数据文件。由于直接使用Dask仍然会消耗最大的CPU,所以我将文件读取为熊猫数据格式,然后使用dask_cudf,然后转换回熊猫数据格式。

但是,我的代码仍在使用Kaggle上的最大CPU。GPU加速器开机。

代码语言:javascript
复制
import pandas as pd 
from dask import dataframe as dd
from dask_cuda import LocalCUDACluster
from dask.distributed import Client
cluster = LocalCUDACluster()
client = Client(cluster)

df = pd.read_csv("../input/subtype-nt/meth_subtype_normal_tumor.csv", sep="\t", index_col=0)
ddf = dask_cudf.from_cudf(df, npartitions=2)
meth_sub_nt = ddf.infer_objects()
EN

回答 2

Stack Overflow用户

发布于 2022-07-31 15:08:08

我也遇到过类似的问题。通过一些研究,我了解了瓦埃克斯

您可以阅读它的性能这里这里

本质上,这就是你可以尝试做的事情:

  1. 使用Vaex读取csv文件并将其转换为hdf5文件(为Vaex优化的文件格式) ( vaex.from_csv('../input/subtype-nt/meth_subtype_normal_tumor.csv',convert=True,chunk_size=5_000)
  2. 使用Vaex打开hdf5文件。Vaex将执行memory-mapping,因此不会将数据加载到内存中。 vaex.open('../input/subtype-nt/meth_subtype_normal_tumor.csv.hdf5') = vaex_df

现在,您可以对Vaex数据文件执行操作,就像您对Pandas所做的那样。它将是惊人的快速,你肯定会注意到巨大的性能提高(较低的CPU和内存使用)。

您还可以尝试将您的csv文件直接读取到Vaex数据文件中,而无需将其转换为hdf5。我在某个地方读到Vaex在hdf5文件中运行得最快,因此我建议采用上述方法。

代码语言:javascript
复制
vaex_df = vaex.from_csv('../input/subtype-nt/meth_subtype_normal_tumor.csv.hdf5', chunk_size=5_000)
票数 1
EN

Stack Overflow用户

发布于 2022-08-01 04:44:07

现在,您的代码建议您首先尝试使用pandas加载数据,然后将其转换为dask-cuDF数据。这不是最优的(甚至可能是不可行的)。相反,可以使用dask_cudf.read_csv函数(参见文档):

代码语言:javascript
复制
from dask_cudf import read_csv

ddf = read_csv('example_output/foo_dask.csv')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73184224

复制
相关文章

相似问题

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