Pandas处理JSON文件to_json()一文详解+实例代码

简介: Pandas处理JSON文件to_json()一文详解+实例代码

前言


本文接上一篇博客:Python处理JSON文件数据各类操作一文详解。


处理JSON文件一般并且进行统计或分析都需要把JSON文件格式转换为dataframe形式或是将dataframe转换为JSON,这都需要用到to_json()和read_json()函数。如果能够掌握该两种函数的参数用法能够节省不少时间和代码对后续的文件再处理,因此本篇文章初衷为详细介绍并运用此函数来达到彻底掌握的目的。希望读者看完能够提出问题或者看法,博主会长期维护博客做及时更新。纯分享,希望大家喜欢。


to_json()


to_json()函数主要是将DataFrame数据类型转换为JSON文件格式。

直接看官网解释:

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=None, index=True)

9974103dea004ad685bc4dff7d168c5b.png


参数说明:


path_or_buf:【string or file handle, optional】可以指定对象为文件路径或者为DataFrame,如果不指定,则返回结果为一个字符串。

orient:【string】,指定为将要输出的JSON格式。其中我们输入的对象可能为Series或者为DataFrame:

Series:默认索引为index,也就是行。允许的值输出形式有:{‘split’,’records’,’index’}

DataFrame:默认索引为columns,也就是列索引。允许的值输出形式有:{‘split’,’records’,’index’,’columns’,’values’}

JSON字符形式的输出格式类型:

‘split':将行索引index,列索引columns,值数据date分开来。dict like {‘index’ -> [index], ‘columns’ -> [columns], ‘data’ -> [values]}。

‘records':将列表list格式,以[{列名->值},..]形式输出。list like [{column -> value}, … , {column -> value}]

'index':将字典以{行索引:{列索引:值}}以这种形式输出dict like {index -> {column -> value}}。

'columns':将字典以{列索引:{行索引:值}}以这种形式输出 dict like {column -> {index -> value}}。

'values':就全部输出值就好了。

'table':这个输出有点复杂,具体描述该文件。dict like {‘schema’: {schema}, ‘data’: {data}} describing the data, and the data component is like orient='records'.。到时候实现一下即可了解、

date_format:【None, ‘epoch’, ‘iso’】,日期转换类型。可将日期转为毫秒形式,iso格式为ISO8601时间格式。对于orient='table',默认值为“iso”。对于所有其他方向,默认值为“epoch”。

double_precision:【int, default 10】,对浮点值进行编码时使用的小数位数。默认为10位。

force_unit:【boolean, default True】,默认开启,编码位ASCII码。

date_unit:【string, default ‘ms’ (milliseconds)】,编码到的时间单位,控制时间戳和ISO8601精度。“s”、“ms”、“us”、“ns”中的一个分别表示秒、毫秒、微秒和纳秒.默认为毫秒。

default_handler :【callable, default None】,如果对象无法转换为适合JSON的格式,则调用处理程序。应接收单个参数,该参数是要转换并返回可序列化对象的对象。

lines:【boolean, default False】,如果“orient”是“records”,则写出以行分隔的json格式。如果“orient”不正确,则会抛出ValueError,因为其他对象与列表不同。

compression:【None, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’】,表示要在输出文件中使用的压缩的字符串,仅当第一个参数是文件名时使用。

index:【boolean, default True】,是否在JSON字符串中包含索引值。仅当orient为“split”或“table”时,才支持不包含索引(index=False)。

接下来进行操作演示:


先创建对应dataframe:

date={'code':[20,20,19,19,20],
      'type':['hive','hive','clickhouse','clickhouse','hive'],
      'datetime':['2022-5-23','2022-5-23','2022-5-23','2022-5-23','2022-5-24']
}
df=pd.DataFrame(date)
time_data = pd.to_datetime(df["datetime"],format='%Y-%m-%d')
df['datetime']=time_data
df.dtypes

e63fb22f610e46c58d9fdbed9e1b1b0c.png

split:


df.to_json(orient='split')

097746bf8d6a41da8c7149bf6a7f513e.png


该方法将行索引和列索引和值全都分开来进行存储成json格式。


records


df.to_json(orient='records')


d5cfb4fb7cdf453b9f6ab9ebdc305ef1.png

直接将dataframe的内容输出为列表,此类方法不会把index和columns记录到JSON文件中。


index


df.to_json(orient='index')


edd7711aa1f74c28a4843e6c9a2a5948.png


该方法直接以index行索引为键,不记录列索引columns进行保存。


columns


df.to_json(orient='columns')


01d2127b769343e3903d56dee241d08e.png


该方法直接以columns列索引为键,不记录行索引index进行保存。


values


df.to_json(orient='values')


5f297826f7744e6a9b077aac3a1e70c0.png


该方法就直接输出值列表了,没有记录index和columns。


lable

df.to_json(orient='table')


88b850f97e324dda90e3f2228ca9e6ad.png

从输出格式上来看,该输出将Dataframe输出为具体的表格记录,schema中记录了各个index、columns、data的类型,默认主键为"primaryKey":["index"]。其中data为为逐行记录数据,每一行根据索引index和columns来输出。


date_format

date_format有两种格式可以选择,分别是'epoch‘和'iso'。默认为epoch,意为将日期转为毫秒形式:


df.to_json(orient='values',date_format='epoch')

4aad4abc4ae14a8e800162cc96d30d57.png


可以设定为ISO标准:


df.to_json(orient='values',date_format='iso')


ISO标准也就是我们熟知的标准时间格式。

ac9a2dcf18ab43888b1a44f5b5887c02.png

double_precision


df.to_json(orient='values',date_format='iso',double_precision=10)


精度默认为小数点后10位,自己可以调值。


force_ascii


默认为ASCII编码,这里不用演示。


date_unit


df.to_json(orient='values',date_unit='s')

370e121616b44d8e9f6ef81e2fc4a34a.png

该参数关联epoch,设定的参数将觉得读出来的datetime转化为秒还是毫秒、微秒和纳秒.默认为毫秒。


default_handler

该函数如果对象无法转换为适合JSON的格式,则调用处理程序。不作演示。


index

df.to_json(orient='split',index=False)

index设定只能orient为split和table的时候使用,默认为True,设定为False将不再记录index。  

目录
相关文章
|
4月前
|
JSON 算法 vr&ar
目标检测笔记(五):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等
本文介绍了如何使用COCO评估器通过Detectron2库对目标检测模型进行性能评估,生成coco_instances_results.json文件,并利用pycocotools解析该文件以计算AP、AR、MR和DR等关键指标。
264 1
目标检测笔记(五):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等
|
15天前
|
开发工具 git 索引
怎么取消对project.private.config.json这个文件的git记录
通过以上步骤,您可以成功取消对 `project.private.config.json`文件的Git记录。这样,文件将不会被包含在未来的提交中,同时仍保留在您的工作区中。
56 28
|
2月前
|
存储 数据挖掘 索引
Pandas Series 和 DataFrame 常用属性详解及实例
Pandas 是 Python 数据分析的重要工具,其核心数据结构 Series 和 DataFrame 广泛应用。本文详细介绍了这两种结构的常用属性,如 `index`、`values`、`dtype` 等,并通过具体示例帮助读者更好地理解和使用这些属性,提升数据分析效率。
63 4
|
4月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
71 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
3月前
|
XML JSON JavaScript
Pandas JSON
10月更文挑战第27天
38 0
|
4月前
|
JSON API 数据格式
低代码实现鸿蒙API返回JSON转TS及快速生成ArkUI代码
低代码实现鸿蒙API返回JSON转TS及快速生成ArkUI代码
77 0
低代码实现鸿蒙API返回JSON转TS及快速生成ArkUI代码
|
4月前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
287 2
|
5月前
|
JSON 前端开发 JavaScript
java中post请求调用下载文件接口浏览器未弹窗而是返回一堆json,为啥
客户端调接口需要返回另存为弹窗,下载文件,但是遇到的问题是接口调用成功且不报错,浏览器F12查看居然返回一堆json,而没有另存为弹窗; > 正确的效果应该是:接口调用成功且浏览器F12不返回任何json,而是弹窗另存为窗口,直接保存文件即可。
211 2
|
5月前
|
JSON 前端开发 中间件
React读取properties配置文件转化为json对象并使用在url地址中
本文介绍了如何在React项目中读取properties配置文件,将其内容转化为JSON对象,并在请求URL地址时使用这些配置。文章详细说明了异步读取文件、处理字符串转换为JSON对象的过程,并提供了一个封装函数,用于在发起请求前动态生成配置化的URL地址。
124 1
|
4月前
|
JSON 数据格式 计算机视觉
Opencv实用笔记(一): 获取并绘制JSON标注文件目标区域(可单独保存目标小图)
本文介绍了如何使用OpenCV和Python根据JSON标注文件获取并绘制目标区域,同时可将裁剪的图像单独保存。通过示例代码,展示了如何读取图片路径、解析JSON标注、绘制标注框并保存裁剪图像的过程。此外,还提供了相关的博客链接,供读者进一步学习。
91 0