【问题标题】:Finding #ROWS in a large CSV File在大型 CSV 文件中查找 #ROWS
【发布时间】:2020-12-24 10:41:58
【问题描述】:

目的是查找大型 CSV 文件中的总行数。我现在使用 Python Dask 来查找它,但由于文件大小约为 45G,因此需要相当长的时间。 Unix catwc -l 似乎表现更好。

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

【问题讨论】:

  • 不会标记为重复,但请查看 at this post。可能真的很有帮助,它在同一主题上帮助了我!

标签: python pandas csv bigdata dask


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    您可以在 python 代码中尝试subprocess

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

    【讨论】:

    • 谢谢。我一直在这样做,但我的问题更多是关于 pandas/dask 的任何调整以找到它
    猜你喜欢
    • 2014-03-13
    • 2017-04-20
    • 2019-06-10
    • 1970-01-01
    • 2017-10-14
    • 2017-10-23
    • 2014-12-20
    • 1970-01-01
    • 2017-02-18
    相关资源
    最近更新 更多