所以我是一个处理大数据的新手。 我正在处理一个60GB的CSV文件,所以我决定尝试一下Dask,因为它会生成数据帧。这可能是一个愚蠢的问题,但请容忍我,我只需要在正确的方向上推动一下
因此,我理解为什么使用“compute”方法的以下查询会很慢(惰性计算):
df.loc[1:5 ,'enaging_user_following_count'].compute()
顺便说一句,计算起来花了10分钟
但我不明白的是,为什么下面使用“head”方法的代码在不到两秒钟的时间内打印输出(即,在本例中,我要求250行,而前面的代码片段仅打印5行):
df.loc[50:300 , 'enaging_user_following_count'].head(250)
为什么“头”法不需要很长时间?我觉得我遗漏了一些东西,因为我能够以比使用“计算”方法更短的时间提取大量行。 或者在其他情况下使用计算方法
注意:我试图阅读文档,但没有解释为什么head()很快
这将处理整个数据集
原因是,
loc
是一个基于标签的选择器,不知道在哪个分区中存在哪些标签(没有理由它们应该单调递增)。在索引格式良好的情况下,可能会有df.divisions
的有用值,在这种情况下,Dask应该只能选择所需的数据分区半年前我就玩过这个了
.head()
不检查所有分区,只检查第一个分区。没有同步开销等,所以它相当快,但它没有考虑到整个数据集你可以试试
IIRC您应该获得第一个分区的最后250个条目,而不是实际的最后索引
如果你尝试类似的东西
您得到的错误是head找不到250个样本
如果您实际上只想要前几个条目,那么它非常快:)
相关问题 更多 >
编程相关推荐