看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注: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
或 None
None
,则需要在 json
参数中直接传递 JSON 字符串。orient:
str
None
'split'
: 数据分为 index
、columns
和 data
三部分。'records'
: 每一行是一个字典,列名是键。'index'
: JSON 对象的键是索引,值是列。'columns'
: JSON 对象的键是列,值是列数据。'values'
: 数据只包含值,没有列或索引。typ:
{'frame', 'series'}
'frame'
DataFrame
还是 Series
。大部分情况下使用默认的 DataFrame
。dtype:
bool
、dict
、None
None
False
,将不会进行类型转换。你也可以传入字典,指定各列的数据类型。convert_axes:
bool
、None
None
True
表示进行转换。convert_dates:
bool
、list
True
keep_default_dates:
bool
True
False
,不会将默认的列(如 'date'
)解析为日期。precise_float:
bool
False
True
,可以提高浮点数解析的精度。date_unit:
str
None
's'
、'ms'
、'us'
、'ns'
等。encoding:
str
None
'utf-8'
。encoding_errors:
str
'strict'
'ignore'
、'replace'
。lines:
bool
False
True
,则将每一行视为一个 JSON 对象,非常适合处理多行 JSON 数据。chunksize:
int
、None
None
compression:
{'infer', 'gzip', 'bz2', 'zip', 'xz', None}
'infer'
'infer'
会自动推断。nrows:
int
、None
None
storage_options:
dict
、None
None
dtype_backend:
str
或 _NoDefault
_NoDefault.no_default
engine:
str
'ujson'
'ujson'
或 'pyjson'
。'ujson'
更快,但可能不支持某些复杂的 JSON 结构。pandas.DataFrame
或 pandas.Series
pandas.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