Python库pandas之四

输入/输出

read_json

函数

词法:pandas.read_json(path_or_buf, *, orient=None, typ=‘frame’, dtype=None, convert_axes=None, convert_dates=True, keep_default_dates=True, precise_float=False, date_unit=None, encoding=None, encoding_errors=‘strict’, lines=False, chunksize=None, compression=‘infer’, nrows=None, storage_options=None, dtype_backend=<no_default>, engine=‘ujson’)

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

参数说明

  • path_or_buf,该参数类型是一个有效的JSON字符串, 路径对象,或类似文件的对象。
    任何有效的字符串路径都是可接受的。该字符串可以是URL。有效的 URL 方案包括 http、ftp、s3 和 file。对于文件 URL,需要一个主机。本地文件可以是:file://localhost/path/to/table.json。
    如果你想传入一个路径对象,pandas 接受任何 os.PathLike。
    通过类文件对象,指的是具有 read() 方法的对象,例如文件句柄(例如通过内置 open 函数)或 StringIO。

  • orient,该参数类型是字符串, 是可选的。
    该参数指出期望的JSON。to_json() 可以使用相应的 orient 值生成兼容的 JSON 字符串。可能的orient集是:
    ‘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}} 的形式。

    允许的值和默认值取决于typ参数的值。
    当 type == ‘系列’ 时,
    允许的orient是 {‘split’,‘records’,‘index’}
    默认值为“index”
    Series索引对于orient的’index’必须是唯一的。
    当 type == ‘frame’ 时,
    允许的orient为 {‘split’,‘records’,‘index’, ‘columns’,‘values’, ‘table’}
    默认值为“columns”
    DataFrame 索引对于方向“index”和“columns”必须是唯一的。
    DataFrame 列对于“index”、“columns”和“records”方向必须是唯一的。

  • typ,该参数类型是{‘frame’, ‘series’}, 默认值为‘frame’。
    要恢复的对象的类型。

  • dtype,该参数类型是bool或者dict, 默认值为None。
    如果该参数为True,则推断dtypes;如果要指定dtype为列的字典,则使用它们;
    如果为 False,则根本不推断dtype,仅适用于数据。
    若参数orient值不是“table”,则默认值为 True。

  • convert_axes,该参数类型是bool, 默认值为None。
    尝试将轴转换为正确的dtypes。
    若参数orient值不是“table”,则默认值为 True。

  • convert_dates,该参数类型是bool或字符串list, 默认值为True。
    如果convert_dates为 True,则可以转换默认的类似日期的列(取决于 keep_default_dates)。
    如果convert_dates为 False,则不会转换任何日期。如果是列名列表,则这些列将被转换,并且默认的类似日期的列也可能被转换(取决于 keep_default_dates)。

  • keep_default_dates,该参数类型是bool, 默认值为True。
    如果解析日期(convert_dates 不为 False),则尝试解析默认的类似日期的列。如果列名有下列的特点,则它是类似日期。
    列名以“_at”结尾,
    列名以“_time”结尾,
    列名以“timestamp”开头,
    列名是’modified’,
    列名是’date’。

  • precise_float,该参数类型是bool, 默认值为False。
    precise_float是True,在将字符串解码为双精度值时,使用更高精度 (strtod) 函数。precise_float是False,是使用快速,但不太精确的内置功能。

  • date_unit,该参数类型是字符串, 默认值为None。
    转换​​日期时,date_unit设置用于检测时间戳单位。默认行为是尝试检测正确的精度。如果不希望这样,则传递“s”、“ms”、“us”或“ns”之一,以分别强制仅解析秒、毫秒、微秒或纳秒。

  • encoding,该参数类型是字符串, 默认值为‘utf-8’。
    用于解码 py3 字节的编码。

  • encoding_errors,该参数类型是字符串, 是可选的, 默认值为“strict”。
    如何处理编码错误。

  • lines,该参数类型是bool, 默认值为False。
    将文件作为每行 json 对象读取。

  • chunksize,该参数类型是int, 是可选的。
    如果指定chunksize,则返回JsonReader对象,进行迭代。仅当lines=True时,才能传递此参数。如果为 None,则文件将被一次性读入内存。

  • compression,该参数类型是字符串,或者dict, 默认值为‘infer’。
    用于磁盘数据的即时解压缩。如果“infer”和“path_or_buf”是类似路径,则检测以下扩展名的压缩:“.gz”、“.bz2”、“.zip”、“.xz”、“.zst”、“.tar” 、“.tar.gz”、“.tar.xz”或“.tar.bz2”,否则不压缩。
    如果使用“zip”或“tar”,ZIP 文件,必须仅包含一个要读入的数据文件。
    设置compression为None,则不解压。
    也可以是字典,该字典包含 'method’键,而且该键的值为 {‘zip’, ‘gzip’, ‘bz2’, ‘zstd’, ‘xz’, ‘tar’} 。
    其他键值对转发到zipfile.ZipFile, gzip.GzipFile, bz2.BZ2File, zstandard.ZstdDecompressor, lzma.LZMAFile或 tarfile.TarFile。

  • nrows,该参数类型是int, 是可选的。
    必须读取的行分隔 json 文件的行数。仅当lines=True 时,才能传递此参数。如果为 None,则将返回所有行。

  • storage_options,该参数类型是dict, 是可选的。
    对于特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于 HTTP(S) URL,键值对将作为标头选项转发到 urllib.request.Request。对于其他 URL(例如以“s3://”和“gcs://”开头),键值对将转发到 fsspec.open。

  • dtype_backend,该参数类型是{‘numpy_nullable’, ‘pyarrow’}, 默认值为‘numpy_nullable’。
    应用于生成的 DataFrame 的后端数据类型。行为如下:
    “numpy_nullable”:返回支持 nullable-dtype 的 DataFrame(默认)。
    “pyarrow”:返回 pyarrow 支持的可为空的 ArrowDtype DataFrame。

  • engine{“ujson”, “pyarrow”}, default “ujson”。
    要使用的解析器引擎。 “pyarrow”引擎仅在lines=True时可用。

应用实列

test_1.json文件内容

{
 "index": {"0": 0, "1": 1, "2": true},
     "a": {"0": 1, "1": null, "2": false},
     "b": {"0": 2.5, "1": 4.5, "2": 0},
     "c": {"0": true, "1": false, "2": null},
}

pandas_io_2.py

import sys
import pandas as pd

def read_json_file(fn):
    df = pd.read_json(fn)
    print(df)
    print()
    print(df['a'])
    print()
    df = pd.read_json(fn,typ='series',convert_dates=True)
    print(df)
    print()
    print(df['a'])
    
if __name__ == "__main__":
    read_json_file(sys.argv[1])
C:\>python pandas_io_2.py test_1.json
   index    a    b    c
0      0  1.0  2.5  1.0
1      1  NaN  4.5  0.0
2      1  0.0  0.0  NaN

0    1.0
1    NaN
2    0.0
Name: a, dtype: float64

index           {'0': 0, '1': 1, '2': True}
a           {'0': 1, '1': None, '2': False}
b              {'0': 2.5, '1': 4.5, '2': 0}
c        {'0': True, '1': False, '2': None}
dtype: object

{'0': 1, '1': None, '2': False}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值