在大型CSV文件中查找#ROWS

问题描述

目的是查找大型CSV文件中的总行数。我现在正在使用Python dask进行查找,但是由于文件大小约为45G,因此需要花费一些时间。带有cat的Unix wc -l似乎表现更好。

所以问题是-dask / pandas read_csv是否有任何调整,以使其更快地找到总行数?

解决方法

您可以在python代码中尝试subprocess

fileName = "file.csv"
cmd = 'wc -l {0}'.format(fileName)
output = subprocess.call(cmd)
,

Dask数据框将花费其90%的时间将文本解析为各种数值类型,例如int,float等。您不需要任何此类内容,因此最好不要制作类似数据框的东西。

您可以使用dask.bag,它将更快/更简单

dask.bag.read_text("...").count().compute()

但是实际上wc -l的速度将与其他任何东西一样快。您应该完全受磁盘速度的约束,而不是受计算能力的约束。 Dask帮助您利用CPU上的多个内核,但是在这种情况下,这些并不是瓶颈,因此wc不是正确的工具。