开发手册 欢迎您!
软件开发者资料库

Python Pandas pandas.read_json函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中read_json方法的使用。

pandas.read_json(path_or_buf=None, orient=None, typ='frame', dtype=None, convert_axes=None, convert_dates=True, keep_default_dates=True, numpy=False, precise_float=False, date_unit=None, encoding=None, encoding_errors='strict', lines=False, chunksize=None, compression='infer', nrows=None, storage_options=None)       

[源代码]

将JSON字符串转换为pandas对象。

参数:

path_or_buffer:JSON str, path对象 或 file-like 对象

任何有效的字符串路径都可以接受。字符串可以是URL。

有效的URL方案包括http、ftp、s3和file。对于文件url,

需要一个主机。本地文件可以是:

file://localhost/path/to/table.json

如想传入一个路径对象,pandas接受任何os.PathLike

通过文件类对象,我们使用read()方法来引用对象,

例如,文件句柄(例如通过内置的open函数)或StringIO

iorientstr

指示预期的JSON字符串格式。

兼容的JSON字符串可以由to_json()生成,

并具有相应的方向值。可能的方向集合为:

1)'split' : dict 如 {index -> [index], columns -> [columns], data -> [values]}

2)'records' : list 如 [{column -> value}, ... , {column -> value}]

3)'index' : dict 如 {index -> {column -> value}}

4)'columns' : dict 如 {column -> {index -> value}}

5)'values':只有值数组

允许的值和默认值取决于typ参数的值。

6 )当 typ == 'series',

orients 可以为 {'split','records','index'}

默认为 'index'

Series index 必须是唯一的 orient 'index'

7)当 typ == 'frame',

orients 可以为 {'split','records','index', 'columns','values', 'table'}

默认为 'columns'

DataFrame index 必须是唯一的 orients 'index''columns'

DataFrame 列 必须是唯一的 orients 'index', 'columns', 和 'records'

typ{‘frame’, ‘series’}, 默认为'frame'

要恢复的对象类型。

dtypebool dict, 默认为 None

如果为True,则推断dtypes;如果字典的列类型为dtype

则使用那些;如果为False,则根本不推断dtypes,只应用于数据。

除‘table’之外的,所有orient值默认为True

在0.25.0版更改:不适用于orient='table'

convert_axesbool, 默认为None

尝试将axes转换为适当的dtypes

'table'之外的,所有orient值默认为True

在0.25.0版更改:不适用于orient='table'

convert_dates:bool 或 str的list, 默认为 True

如果为True,则可以转换默认的类似于日期的列(取决于keep_default_dates)。

如果为False,则没有日期将被转换。如果是列名称列表,那么这些列将被转换,

默认的类似日期的列也可能被转换(取决于keep_default_dates)。

keep_default_dates:bool, 默认为 True

如果解析日期(convert_dates不是False),则尝试解析默认的类似日期的列。

列标签类似于如下:

1)如结尾为'_at',

2)如结尾为 '_time',

3)如开始为 'timestamp',

4)如为 'modified', 或

5)如为 'date'

numpybool, 默认为 False

直接解码到numpy数组。只支持数字数据,但支持非数字的列和索引标签。

还要注意,如果numpy=True,每个术语的JSON排序必须相同。

1.0.0版后已移除。

precise_floatbool, 默认为 False

设置为在将字符串解码为双精度值时启用更高精度(strtod)函数。

默认(False)是使用快速但不精确的内置功能。

date_unitstr, 默认为 None

用于检测是否转换日期的时间戳单元。默认行为是尝试并检测正确的精度,

但如果不希望这样做,

则通过's' 、'ms'、'us' '或'ns'中的一个来分别强制只解析秒、毫秒、微秒或纳秒。

encodingstr, 默认为 ‘utf-8’

用于解码py3字节的编码

encoding_errorsstr, 可选的, 默认为"strict"

如何处理编码错误。可能值的列表

1.3.0新版功能。

linesbool, 默认为 False

每行读取文件为json对象。

chunksizeint, 可选

返回JsonReader对象进行迭代。有关chunksize的更多信息,

请参阅行分隔的json docs。这只能在lines=True时传递。如果这是None,

文件将被一次读入内存。

在1.2版更改:JsonReader是一个上下文管理器。

compressionstrdict, 默认为'infer'

用于对磁盘上的数据进行实时解压。

如果'infer'和'path_or_buf'是类似路径的,

那么检测以下扩展名的压缩:'.gz’, ‘.bz2’, ‘.zip’, ‘.xz’, 或 ‘.zst’(否则不压缩)。

如果使用'zip',则zip文件必须只包含一个要读入的数据文件。如果不解压,

请设置为None。也可以是一个字典,

'method'设置为{'zip', 'gzip', 'bz2', 'zstd'}

其他键值对分别zipfile.ZipFile,gzip.GzipFile, bz2.BZ2File

zstandard.ZstdDecompressor,

例如,可以使用自定义压缩字典传递以下信息用于Zstandard解压缩:

compression={'method': 'zstd', 'dict_data': my_compression_dict}

在1.4.0版更改:Zstandard支持。

nrowsint, 可选

必须从以行分隔的jsonfile中读取的行数。这只能在lines=True时传递。

如果为None,则返回所有行。

1.1新版功能。

storage_optionsdict, 可选

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

对于HTTP(S) url,键值对作为头选项转发urllib

对于其他url(例如以"s3://"和"gcs://"开头)键值对被转发fsspec

请参阅fsspecurllib了解更多细节。

1.2.0新版功能。

返回:

SeriesDataFrame

返回的类型取决于typ的值。

Notes

特定于orient='table',如果使用to_json()写入一个索引名为Index的文本DataFrame,后续的读取操作将错误地将索引名称设置为None。这是因为DataFrame.to_json()也使用index来表示缺失的index名称,而后续的read_json()操作无法区分两者。MultiIndex和任何以'level_'开头的名称也会遇到相同的限制。

例如,

>>> df = pd.DataFrame([['a', 'b'], ['c', 'd']],                  index=['row 1', 'row 2'],                  columns=['col 1'

使用'split'格式的JSON编码/解码Dataframe:

>>> df.to_json(orient='split')    '{"columns":["col 1","col 2"],"index":["row 1","row 2"],"data":[["a","b"],["c","d"]]}'>>> pd.read_json(_, orient='split')      col 1 col 2row 1     a     brow 2     c     d

使用'index'格式的JSON编码/解码Dataframe:

>>> df.to_json(orient='index')'{"row 1":{"col 1":"a","col 2":"b"},"row 2":{"col 1":"c","col 2":"d"}}'
>>> pd.read_json(_, orient='index') col 1 col 2row 1 a brow 2 c d

使用'records'格式的JSON编码/解码Dataframe。注意,索引标签不保留这种编码。

>>> df.to_json(orient='records')'[{"col 1":"a","col 2":"b"},{"col 1":"c","col 2":"d"}]'>>> pd.read_json(_, orient='records')  col 1 col 20     a     b1     c     d

使用表模式编码:

>>> df.to_json(orient='table')    '{"schema":{"fields":[{"name":"index","type":"string"},{"name":"col 1","type":"string"},{"name":"col 2","type":"string"}],"primaryKey":["index"],"pandas_version":"1.4.0"},"data":[{"index":"row 1","col 1":"a","col 2":"b"},{"index":"row 2","col 1":"c","col 2":"d"}]}'