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。  

目录
相关文章
|
21天前
|
JSON 前端开发 JavaScript
jQuery ajax读取本地json文件 三级联动下拉框
jQuery ajax读取本地json文件 三级联动下拉框
|
23天前
|
安全 JavaScript 前端开发
Angular 配置文件 tsconfig.lib.json 里的 strictTemplates 选型
Angular 配置文件 tsconfig.lib.json 里的 strictTemplates 选型
17 0
|
23天前
|
Web App开发 存储 JSON
Chrome插件开发(一)—manifest.json文件介绍
Chrome插件开发(一)—manifest.json文件介绍
24 0
|
23天前
|
数据挖掘 数据处理 索引
使用Pandas从Excel文件中提取满足条件的数据并生成新的文件
使用Pandas从Excel文件中提取满足条件的数据并生成新的文件
27 1
|
23天前
|
JSON JavaScript 前端开发
vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户
vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户
|
23天前
|
前端开发
【专栏】在前端开发中,package.json 文件是项目的重要配置文件,其中包含了许多与项目相关的信息和设置
【4月更文挑战第29天】`package.json`的`proxy`字段用于配置开发环境中的代理服务器,解决跨域问题并模拟后端响应。它是字符串类型,值为代理服务器地址。主要应用场景包括前端跨域请求和本地调试。配置时在`package.json`顶层添加`proxy`字段,如`"proxy": "http://localhost:8080"`。该配置仅在开发环境中生效,生产环境需另寻解决方案。
|
23天前
|
SQL 数据采集 数据可视化
使用Python Pandas实现两表对应列相加(即使表头不同)
使用Python Pandas实现两表对应列相加(即使表头不同)
36 3
|
3天前
|
数据采集 安全 数据处理
Python采集数据处理:利用Pandas进行组排序和筛选
使用Python的Pandas库,结合亿牛云代理和多线程技术,提升网络爬虫数据处理效率。通过代理IP避免封锁,多线程并发采集,示例代码展示数据分组、排序、筛选及代理IP配置和线程管理。
Python采集数据处理:利用Pandas进行组排序和筛选
|
5天前
|
Python 数据挖掘 数据可视化
Python数据分析——Pandas与Jupyter Notebook
【6月更文挑战第1天】 本文探讨了如何使用Python的Pandas库和Jupyter Notebook进行数据分析。首先,介绍了安装和设置步骤,然后展示了如何使用Pandas的DataFrame进行数据加载、清洗和基本分析。接着,通过Jupyter Notebook的交互式环境,演示了数据分析和可视化,包括直方图的创建。文章还涉及数据清洗,如处理缺失值,并展示了如何进行高级数据分析,如数据分组和聚合。此外,还提供了将分析结果导出到文件的方法。通过销售数据的完整案例,详细说明了从加载数据到可视化和结果导出的全过程。最后,讨论了进一步的分析和可视化技巧,如销售额趋势、产品销售排名和区域分布,以及
21 2
|
9天前
|
数据采集 SQL 数据处理
Python中的Pandas库:数据处理与分析的利器
Python中的Pandas库:数据处理与分析的利器
22 0