Python库pandas之四
- 输入/输出
- read_json
- 函数
- 应用实列
输入/输出
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 pddef 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.jsonindex a b c
0 0 1.0 2.5 1.0
1 1 NaN 4.5 0.0
2 1 0.0 0.0 NaN0 1.0
1 NaN
2 0.0
Name: a, dtype: float64index {'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}