dask.dataframe.read_csv

dask.dataframe.read_csv

dask.dataframe.read_csv(urlpath, blocksize='default', lineterminator=None, compression='infer', sample=256000, sample_rows=10, enforce=False, assume_missing=False, storage_options=None, include_path_column=False, **kwargs)

将 CSV 文件读入 Dask.DataFrame

这以以下方式并行化 pandas.read_csv() 函数:

  • 它支持使用 globstrings 一次性加载多个文件:

    >>> df = dd.read_csv('myfiles.*.csv')  
    
  • 在某些情况下,它可以分解大文件:

    >>> df = dd.read_csv('largefile.csv', blocksize=25e6)  # 25MB chunks  
    
  • 它可以通过提供URL从外部资源(例如S3、HDFS)读取CSV文件:

    >>> df = dd.read_csv('s3://bucket/myfiles.*.csv')  
    >>> df = dd.read_csv('hdfs:///myfiles.*.csv')  
    >>> df = dd.read_csv('hdfs://namenode.example.com/myfiles.*.csv')  
    

内部 dd.read_csv 使用 pandas.read_csv() 并且支持许多相同的性能保证的关键字参数。有关可用关键字参数的更多信息,请参阅 pandas.read_csv() 的文档字符串。

参数
urlpath字符串或列表

绝对或相对文件路径。使用 s3:// 等协议前缀可以从其他文件系统读取。要从多个文件读取,可以传递一个全局字符串或路径列表,但前提是它们必须使用相同的协议。

块大小str, int 或 None, 可选

用于分割较大文件的字节数。默认值根据可用物理内存和核心数计算,最大为64MB。可以是像 64000000 这样的数字,或者是像 "64MB" 这样的字符串。如果为 None,则每个文件使用一个块。

示例int, 可选

确定数据类型时使用的字节数

假设缺失bool, 可选

如果为 True,所有未在 dtype 中指定的整数列都被假定为包含缺失值,并被转换为浮点数。默认为 False。

存储选项dict, 可选

特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。

include_path_column布尔值或字符串,可选

是否包含每个特定文件的路径。如果为 True,则会在数据框中添加一个名为 path 的新列。如果为字符串,则设置新列的名称。默认为 False。

**kwargs

传递给 pandas.read_csv() 的额外关键字参数。

注释

Dask dataframe 尝试通过从文件开头(或如果是 glob 则从第一个文件)读取样本,来推断每一列的 dtype 。通常这工作得很好,但如果文件中(或在其他文件中)的 dtype 不同,这可能会导致问题。例如,如果样本中的所有行都是整数类型,但后来有一个 NaN ,那么在计算时就会出错。要解决这个问题,你有几个选项:

  • 使用 dtype 关键字为有问题的列提供显式数据类型。这是推荐的解决方案。

  • 使用 assume_missing 关键字来假设所有推断为整数的列包含缺失值,并将其转换为浮点数。

  • 使用 sample 关键字增加样本的大小。

还应注意的是,如果CSV文件包含包含行终止符的引号字符串,此功能可能会失败。为了解决这个问题,您可以指定 blocksize=None 以不将文件分割成多个分区,但代价是降低了并行性。