【问题标题】:How to make dask dataframe read from stdin?如何从标准输入读取 dask 数据帧?
【发布时间】:2021-11-05 17:34:45
【问题描述】:

对于 dask 数据框,我想将 sys.stdin 作为输入

dask.dataframe.read_csv(sys.stdin, sep=" ", header=None)

但是,dask.dataframe 只接受文件路径/路径作为输入,因此会报错。
有没有办法用 dask 从 stdin 读取而不必将整个 stdin 保存到文件中?

这里,一个非常大的文件的内容被作为输入传送到 python 程序。

【问题讨论】:

    标签: python-3.x pandas data-science dask dask-dataframe


    【解决方案1】:

    dask 在这种情况下的附加值尚不清楚,因为大概stdin 小到足以放入内存(如果不是,那么有趣的是为什么不保留数据)。无论如何,这是一种可能的工作流程:

    import sys
    import pandas as pd
    import dask.dataframe as dd
    
    df = pd.read_csv(sys.stdin, sep=" ", header=None)
    ddf = dd.from_pandas(df, npartitions=10) # adjust as appropriate
    

    【讨论】:

    • 如果标准输入很大怎么办?因为我将一个大文件的内容作为输入传递给 python 程序
    • 在这种情况下,您确实需要一个流数据库,请查看 streamz:streamz.readthedocs.io/en/latest/dataframes.html
    • 哎呀,您的评论已被编辑,所以我之前的评论是针对流数据的。如果您的数据在文件中,那么最好避免将 stdin 作为中介并直接从文件中读取(使用 dask)。
    • 但是如果输入文件是通过管道传输的,如何让 dask 从标准输入中读取?你能举个例子吗?
    • 好吧,如果数据在文件中,为什么不直接将文件传递给dask(而不是通过stdin)?所以像dd.read_csv(path_to_file, ...) # ... add options as appropriate.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2019-07-26
    • 2013-03-30
    相关资源
    最近更新 更多