dask.dataframe.read_json

dask.dataframe.read_json

dask.dataframe.read_json(url_path, orient='records', lines=None, storage_options=None, blocksize=None, sample=1048576, encoding='utf-8', errors='strict', compression='infer', meta=None, engine=<function read_json>, include_path_column=False, path_converter=None, **kwargs)[源代码]

从一组JSON文件创建一个数据框

这使用了 pandas.read_json(),并且大多数参数是直接传递的 - 请参阅其文档字符串。

差异:默认情况下,orient 为 ‘records’,并设置 lines=True;这适用于行分隔的“JSON-lines”数据,这种类型的 JSON 输出在大数据场景中最常见,并且在读取时可以分块(参见 read_json())。所有其他选项都需要设置 blocksize=None,即每个输入文件一个分区。

参数
url_path: str, list of str

读取位置。如果是字符串,可以包含通配符来查找一组文件名。支持协议规范,例如 "s3://"

编码, 错误:

要实现的文本编码,例如“utf-8”,以及如何在转换中处理错误(参见 str.encode())。

orient, lines, kwargs

传递给 pandas;如果未指定,当 orient=’records’ 时,lines=True,否则为 False。

storage_options: dict

传递给后端文件系统实现

blocksize: None 或 int

如果为 None,文件不会被阻塞,每个输入文件对应一个分区。如果为 int,这只能用于行分隔的 JSON 文件,每个分区的大小将大约为此字节数,以最近的换行符为准。

示例: int

预加载的字节数,为没有数据的块提供一个空的数据框结构。仅在使用块大小时相关。

编码, 错误:

文本转换,参见 bytes.decode()

压缩字符串或无

类似 ‘gzip’ 或 ‘xz’ 的字符串。

引擎 : 可调用对象或字符串, 默认 pd.read_json可调用对象或字符串,默认

dask 用于读取 JSON 文件的底层函数。默认情况下,这将是 pandas 的 JSON 读取器(pd.read_json)。如果指定了一个字符串,该值将作为 engine 关键字参数传递给 ``pd.read_json``(仅支持 pandas>=2.0)。

include_path_column布尔值或字符串,可选

在数据框中包含一个列,显示每行数据来源的文件路径。如果 True,则在数据框中添加一个名为 path 的新列。如果为 str,则设置新列的名称。默认值为 False

路径转换器函数或无,可选

一个接受一个参数并返回字符串的函数。用于转换 path 列中的路径,例如,从所有路径中去除一个共同的前缀。

metapd.DataFrame, pd.Series, dict, iterable, tuple, optional

一个空的 pd.DataFramepd.Series,其数据类型和列名与输出匹配。此元数据对于 dask dataframe 中的许多算法正常工作是必要的。为了便于使用,还提供了一些替代输入。除了 DataFrame 之外,还可以提供 {name: dtype} 的字典或 (name, dtype) 的可迭代对象(注意名称的顺序应与列的顺序匹配)。除了系列之外,还可以使用 (name, dtype) 的元组。如果未提供,dask 将尝试推断元数据。这可能会导致意外结果,因此建议提供 meta。有关更多信息,请参阅 dask.dataframe.utils.make_meta

返回
dask.DataFrame

示例

加载单个文件

>>> dd.read_json('myfile.1.json')  

加载多个文件

>>> dd.read_json('myfile.*.json')  
>>> dd.read_json(['myfile.1.json', 'myfile.2.json'])  

使用大约256MB大小的分区加载大型行分隔的JSON文件

>> dd.read_json(‘data/file*.csv’, blocksize=2**28)