看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas.read_json() 是一个用于将 JSON 数据读入 Pandas DataFrame 的函数。它非常适合处理来自 Web API、文件或其他数据源的 JSON 格式数据,并将其转换为 Pandas 数据结构,方便后续的分析与操作。
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=_NoDefault.no_default,
engine='ujson'
)
path_or_buf:
str、pathlib.Path、file-like object、bytes 或 NoneNone,则需要在 json 参数中直接传递 JSON 字符串。orient:
strNone'split': 数据分为 index、columns 和 data 三部分。'records': 每一行是一个字典,列名是键。'index': JSON 对象的键是索引,值是列。'columns': JSON 对象的键是列,值是列数据。'values': 数据只包含值,没有列或索引。typ:
{'frame', 'series'}'frame'DataFrame 还是 Series。大部分情况下使用默认的 DataFrame。dtype:
bool、dict、NoneNoneFalse,将不会进行类型转换。你也可以传入字典,指定各列的数据类型。convert_axes:
bool、NoneNoneTrue 表示进行转换。convert_dates:
bool、listTruekeep_default_dates:
boolTrueFalse,不会将默认的列(如 'date')解析为日期。precise_float:
boolFalseTrue,可以提高浮点数解析的精度。date_unit:
strNone's'、'ms'、'us'、'ns' 等。encoding:
strNone'utf-8'。encoding_errors:
str'strict''ignore'、'replace'。lines:
boolFalseTrue,则将每一行视为一个 JSON 对象,非常适合处理多行 JSON 数据。chunksize:
int、NoneNonecompression:
{'infer', 'gzip', 'bz2', 'zip', 'xz', None}'infer''infer' 会自动推断。nrows:
int、NoneNonestorage_options:
dict、NoneNonedtype_backend:
str 或 _NoDefault_NoDefault.no_defaultengine:
str'ujson''ujson' 或 'pyjson'。'ujson' 更快,但可能不支持某些复杂的 JSON 结构。pandas.DataFrame 或 pandas.Seriespandas.read_json() 主要用于处理 JSON 数据,这种数据格式广泛应用于 Web 服务、文件存储等场景。该函数可以帮助你轻松地将 JSON 数据转化为 Pandas 的数据结构,便于后续的数据处理和分析。
from io import StringIO
df = pd.DataFrame([['a', 'b'], ['c', 'd']],
index=['row 1', 'row 2'],
columns=['col 1', 'col 2'])
使用“split”格式的JSON对数据帧进行编码/解码:
df.to_json(orient='split')
# '{"columns":["col 1","col 2"],"index":["row 1","row 2"],"data":[["a","b"],["c","d"]]}'
pd.read_json(StringIO(_), orient='split')
'''
col 1 col 2
row 1 a b
row 2 c d
'''
使用“index”格式的JSON对数据帧进行编码/解码:
df.to_json(orient='index')
# '{"row 1":{"col 1":"a","col 2":"b"},"row 2":{"col 1":"c","col 2":"d"}}'
pd.read_json(StringIO(_), orient='index')
'''
col 1 col 2
row 1 a b
row 2 c d
'''
使用“记录”格式的JSON对数据帧进行编码/解码。请注意,此编码不会保留索引标签。
df.to_json(orient='records')
# '[{"col 1":"a","col 2":"b"},{"col 1":"c","col 2":"d"}]'
pd.read_json(StringIO(_), orient='records')
'''
col 1 col 2
0 a b
1 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"}]}'
'''
以下示例使用dtype_backend=“numpy_nullable”
data = '''{"index": {"0": 0, "1": 1},
"a": {"0": 1, "1": null},
"b": {"0": 2.5, "1": 4.5},
"c": {"0": true, "1": false},
"d": {"0": "a", "1": "b"},
"e": {"0": 1577.2, "1": 1577.1}}'''
pd.read_json(StringIO(data), dtype_backend="numpy_nullable")
'''
index a b c d e
0 0 1 2.5 True a 1577.2
1 1 <NA> 4.5 False b 1577.1
'''
pandas.read_json() 是一个灵活而强大的函数,适合处理各种 JSON 数据格式。通过调整不同的参数,你可以轻松地解析复杂的 JSON 数据,并将其转换为 Pandas 中的 DataFrame 或 Series,用于后续的数据分析和处理。
更新时间:2024-09-08 15:34:53 标签:pandas python json