Python pandas.DataFrame.to_json函数方法的使用

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

DataFrame.to_json(path_or_buf=None, orient=None, date_format=None, double_precision=10, force_ascii=True, date_unit='ms', default_handler=None, lines=False, compression='infer', index=True, indent=None) [source]

将对象转换为JSON字符串。

注意:NaNNone将被转换为null, datetime对象将被转换为UNIX时间戳。

参数:

path_or_buf :str 或 file handle, 默认为 None

文件路径或对象。如果未指定,则结果以字符串形式返回。

orient :str

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

1) Series:

默认值为‘index’

允许的值为:{'split','records','index','table'}

2) DataFrame:

默认为‘columns’

允许的值为:

{'split','records','index','columns','values','table'}

3) JSON字符串格式:

'split':类似{'index'-> [index],

'columns'-> [columns],'data'-> [values]}的字典

'records':类似于[{column-> value},

…,{column-> value}]的列表

'index':类似{index->​​ {column-> value}}的字典

'columns':类似{column-> {index->​​ value}}的字典

‘values’:只是值数组

'table':类似{'schema':{schema},'data':{data}}的字典

描述数据,其中数据成分类似于orient='records'

在版本0.20.0中更改。

date_format :{None, ‘epoch’, ‘iso’}

日期转换的类型。'epoch'= epoch milliseconds

'iso'= ISO8601。默认值取决于orient

对于 orient='table',默认值为'iso'

对于所有其他东方,默认值为‘epoch’.。

double_precision :int, 默认为10

在对浮点值进行编码时要使用的小数位数。

force_ascii :bool, 默认为True

强制将字符串编码为ASCII

date_unit :str,默认为“ms”(毫秒)

要编码的时间单位,控制时间戳和ISO8601精度。

“s”,“ms”,“us”,“ns”之一分别表示秒,毫秒,微秒和纳秒。

default_handler :callable, 默认为None

如果对象不能转换为适合JSON的格式,则调用。

应该接收一个参数,该参数是要转换的对象并返回一个可序列化对象。

lines :bool, 默认为 False

如果'orient''records',则写出行分隔的json格式。

如果不正确的‘orient’将抛出ValueError,因为其他人没有列出。

compression :{‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None}

表示要在输出文件中使用的压缩的字符串,

仅在第一个参数是文件名时使用。默认情况下,

压缩是从文件名推断出来的。


在0.24.0版本中更改:增加了“infer”选项并将其设置为默认

index :bool, 默认为 True

是否在JSON字符串中包括索引值。

仅当Orient“split”“table”时,

才支持不包括index(index=False)。

0.23.0版中的新功能。

indent int, 可选

用于缩进每条记录的空白长度。

1.0.0版的新功能。。

返回值:

Nonestr

如果path_or_bufNone

则将生成的json格式作为字符串返回。

否则返回None

Notes

indent=0的行为与stdlib不同,stdlib不会缩进输出,但会插入新行。目前,在panda中,indent=0和默认的indent=None是等价的,不过在将来的版本中可能会更改。

例子

>>> import json
>>> df = pd.DataFrame(
...     [["a", "b"], ["c", "d"]],
...     index=["row 1", "row 2"],
...     columns=["col 1", "col 2"],
... )
>>> result = df.to_json(orient="split")
>>> parsed = json.loads(result)
>>> json.dumps(parsed, indent=4)  
{
    "columns": [
        "col 1",
        "col 2"
    ],
    "index": [
        "row 1",
        "row 2"
    ],
    "data": [
        [
            "a",
            "b"
        ],
        [
            "c",
            "d"
        ]
    ]
}

使用'records'格式化的JSON 对数据框进行编码/解码。请注意,索引标签不会使用此编码保留

>>> result = df.to_json(orient="records")
>>> parsed = json.loads(result)
>>> json.dumps(parsed, indent=4)  
[
    {
        "col 1": "a",
        "col 2": "b"
    },
    {
        "col 1": "c",
        "col 2": "d"
    }
]

使用'index'格式化的JSON 编码/解码数据框:

>>> result = df.to_json(orient="index")
>>> parsed = json.loads(result)
>>> json.dumps(parsed, indent=4)  
{
    "row 1": {
        "col 1": "a",
        "col 2": "b"
    },
    "row 2": {
        "col 1": "c",
        "col 2": "d"
    }
}

使用'columns'格式化的JSON 编码/解码数据框:

>>> result = df.to_json(orient="columns")
>>> parsed = json.loads(result)
>>> json.dumps(parsed, indent=4)  
{
    "col 1": {
        "row 1": "a",
        "row 2": "c"
    },
    "col 2": {
        "row 1": "b",
        "row 2": "d"
    }
}

使用'values'格式化的JSON 编码/解码数据框:

>>> result = df.to_json(orient="values")
>>> parsed = json.loads(result)
>>> json.dumps(parsed, indent=4)  
[
    [
        "a",
        "b"
    ],
    [
        "c",
        "d"
    ]
]

使用表架构进行编码:

>>> result = df.to_json(orient="table")
>>> parsed = json.loads(result)
>>> json.dumps(parsed, indent=4)  
{
    "schema": {
        "fields": [
            {
                "name": "index",
                "type": "string"
            },
            {
                "name": "col 1",
                "type": "string"
            },
            {
                "name": "col 2",
                "type": "string"
            }
        ],
        "primaryKey": [
            "index"
        ],
        "pandas_version": "0.20.0"
    },
    "data": [
        {
            "index": "row 1",
            "col 1": "a",
            "col 2": "b"
        },
        {
            "index": "row 2",
            "col 1": "c",
            "col 2": "d"
        }
    ]
}

文档pandas.DataFrame.to_json

推荐阅读
cjavapy编程之路首页