【python】 pandas.DataFrame.to_json 函数

【python】 pandas.DataFrame.to_json 函数

  • 写在最前面
  • 一、什么是 JSON?
    • 【性能对比】python读取json和直接从orcle数据库读,哪个更快?
      • 性能对比
      • 适用场景
      • 综合考虑
  • 二、`to_json` 函数概述
    • 参数详解
      • 1. `path_or_buf`
      • 2. `orient`
      • 4. `double_precision`
      • 5. `force_ascii`
      • 6. `date_unit`
      • 7. `default_handler`
      • 8. `lines`
      • 9. `compression`
      • 10. `index`
      • 11. `indent`
      • 12. `storage_options`
  • 代码示例
    • 示例 1: 导出为默认 JSON 格式
    • 示例 2: 导出为 JSON Lines 格式
    • 示例 3: 导出为 `orient='split'` 格式
    • 示例 4: 使用压缩和指定浮点精度
    • 读取 JSON 文件
  • 小结
    • 参考文献


请添加图片描述

🌈你好呀!我是 是Yu欸
🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!

写在最前面

pandas 是一个强大的数据分析库,它提供了丰富的数据处理功能。在数据导出方面,to_json 函数是 pandas 提供的将数据框(DataFrame)保存为 JSON 格式文件的关键工具。在这篇博客中,我们将深入探讨 to_json 的使用方法、可用参数,并通过代码示例进行演示。

一、什么是 JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人们读取和编写,同时也易于机器解析和生成。它的主要优点包括:

  • 结构清晰:键值对结构使得数据组织直观。
  • 语言无关:广泛支持多种编程语言。
  • 可扩展性:灵活的数据表示使得它适合各种应用场景。

【性能对比】python读取json和直接从orcle数据库读,哪个更快?

在选择从 Oracle 数据库读取数据还是从 JSON 文件读取数据时,性能和用途是关键的考虑因素。下面将从多个方面比较这两种方法的速度和适用场景。

性能对比

  1. 从 Oracle 数据库读取数据

    优点:

    • 实时性: 可以获取最新的数据库数据。
    • 查询能力: 可以使用 SQL 查询过滤和处理数据。
    • 数据完整性: 数据通常经过事务管理,确保一致性。

    缺点:

    • 延迟: 每次读取都需要网络通信,这可能增加延迟,特别是对于大量数据或复杂查询。
    • 负载: 大量读取操作可能增加数据库服务器的负载。

    性能:

    • 速度: 一般来说,从数据库读取数据会慢于从本地 JSON 文件读取数据,特别是在网络延迟或数据库负载较高的情况下。
  2. 从 JSON 文件读取数据

    优点:

    • 速度: 读取本地文件通常比通过网络读取数据库要快,特别是对于大文件。
    • 低延迟: 适用于低延迟的批处理任务或离线分析。
    • 负载: 对数据库服务器没有负载。

    缺点:

    • 静态数据: JSON 文件中的数据是静态的,无法实时更新。
    • 无查询能力: 需要先加载到内存然后手动处理,无法像 SQL 那样查询和过滤。

    性能:

    • 速度: 一般比数据库访问快,但取决于 JSON 文件的大小和存储介质的 I/O 性能。

适用场景

  1. 实时性要求高: 如果需要实时数据更新或处理,数据库访问是首选。
  2. 数据分析和机器学习: 如果需要高效加载大量历史数据或进行离线分析,JSON 文件可能更适合。
  3. 网络环境和负载: 在网络不稳定或数据库负载较高时,读取本地 JSON 文件通常更快。
  • 读取速度: 从 JSON 文件读取通常比从数据库读取快,因为它不涉及网络通信和数据库查询处理。
  • 实时性: 数据库读取提供最新数据,而 JSON 文件只能提供快照数据。
  • 使用场景: 根据需求选择,静态或批量数据处理适合 JSON 文件,实时数据获取和处理适合数据库读取。

综合考虑

如果您的应用程序需要处理实时数据、频繁更新的数据,或者需要复杂的查询,那么从数据库读取数据更适合您。反之,如果您需要处理静态数据或进行离线分析,特别是在处理大数据集时,从 JSON 文件读取数据可能是一个更快的选择。

二、to_json 函数概述

pandas.DataFrame.to_json 是一个用于将 DataFrame 转换为 JSON 字符串或将其导出为 JSON 文件的函数。其语法如下:

DataFrame.to_json(path_or_buf=None, orient='columns', date_format='epoch',
                  double_precision=10, force_ascii=True, date_unit='ms',
                  default_handler=None, lines=False, compression='infer',
                  index=True, indent=None, storage_options=None)

参数详解

1. path_or_buf

  • 描述: 指定文件路径或对象。如果为 None,将返回 JSON 字符串。
  • 默认值: None
  • 示例: 'data/output.json' 或者 None

2. orient

  • 描述: 定义 JSON 数据的格式。可选值包括:
    • 'split':将数据分为 indexcolumnsdata 三部分。
    • 'records':每行作为一个独立的 JSON 对象。
    • 'index':将索引作为键,数据作为嵌套 JSON 对象。
    • 'columns':将列名作为键,数据作为嵌套 JSON 对象。
    • 'values':仅导出值的列表。
    • 'table':基于 JSON 表格模式。
  • 默认值: 'columns'
  • 示例: 'records'

####3. date_format

  • 描述: 日期格式。可选值包括 'epoch''iso'
  • 默认值: 'epoch'(将日期导出为 Unix 时间戳)
  • 示例: 'iso'

4. double_precision

  • 描述: 设置浮点精度。
  • 默认值: 10
  • 示例: 5

5. force_ascii

  • 描述: 是否强制将非 ASCII 字符编码为 \u 序列。
  • 默认值: True
  • 示例: False

6. date_unit

  • 描述: 日期单位。可选值包括 'ns''us''ms''s'
  • 默认值: 'ms'
  • 示例: 's'

7. default_handler

  • 描述: 处理无法序列化对象的函数。
  • 默认值: None
  • 示例: 自定义函数

8. lines

  • 描述: 是否使用 JSON Lines 格式,即每行一个 JSON 对象。
  • 默认值: False
  • 示例: True

9. compression

  • 描述: 指定压缩模式。可选值包括 'infer''gzip''bz2''zip''xz'
  • 默认值: 'infer'
  • 示例: 'gzip'

10. index

  • 描述: 是否包含索引。
  • 默认值: True
  • 示例: False

11. indent

  • 描述: 设置缩进级别。
  • 默认值: None
  • 示例: 4

12. storage_options

  • 描述: 存储选项,例如访问远程文件系统时使用的选项。
  • 默认值: None
  • 示例: {"key": "value"}

代码示例

下面通过几个代码示例来展示 to_json 的实际用法。

示例 1: 导出为默认 JSON 格式

import pandas as pd

data = {
    'id': [1, 2, 3],
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35]
}

df = pd.DataFrame(data)

# 导出为默认格式
df.to_json('data/default.json')

生成的 default.json 文件内容将如下所示:

{
    "id": {"0": 1, "1": 2, "2": 3},
    "name": {"0": "Alice", "1": "Bob", "2": "Charlie"},
    "age": {"0": 25, "1": 30, "2": 35}
}

示例 2: 导出为 JSON Lines 格式

# 导出为 JSON Lines 格式
df.to_json('data/lines.json', orient='records', lines=True)

生成的 lines.json 文件内容将如下所示:

{"id":1,"name":"Alice","age":25}
{"id":2,"name":"Bob","age":30}
{"id":3,"name":"Charlie","age":35}

示例 3: 导出为 orient='split' 格式

# 导出为 'split' 格式
df.to_json('data/split.json', orient='split')

生成的 split.json 文件内容将如下所示:

{
    "columns": ["id", "name", "age"],
    "index": [0, 1, 2],
    "data": [
        [1, "Alice", 25],
        [2, "Bob", 30],
        [3, "Charlie", 35]
    ]
}

示例 4: 使用压缩和指定浮点精度

# 使用压缩和指定浮点精度
df.to_json('data/compressed.json.gz', double_precision=2, compression='gzip')

读取 JSON 文件

我们也可以轻松地从 JSON 文件读取数据:

df_loaded = pd.read_json('data/lines.json', lines=True)
print(df_loaded)

输出:

   id     name  age
0   1    Alice   25
1   2      Bob   30
2   3  Charlie   35

小结

to_json 函数提供了灵活的参数设置,使得 pandas 数据框能够以多种格式导出为 JSON 文件。这些参数使你可以控制数据的格式、日期处理、浮点精度、压缩等。理解并应用这些参数,可以帮助你更高效地处理数据导出需求。

希望这篇博客能帮助你更好地理解和使用 pandas.DataFrame.to_json 函数。如果你有任何问题或建议,请随时在评论区留言。Happy Coding!

参考文献

  • pandas 官方文档
  • JSON Lines 文档

欢迎大家添加好友交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/704890.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于开源模型搭建Agent系统教程

一篇非常基础非常基础的Agent博客 大型语言模型(LLMs)经过causal language modeling训练后,可以处理各种任务,但它们通常在逻辑、计算和搜索等基本任务上表现不佳。最糟糕的情况是,它们在某个领域(如数学&…

MT2093 活动安排

贪心策略&#xff1a; 每次选择结束时间最早的活动 代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N 5e5 10; int n; struct pp {int a, b; } p[N]; bool cmp(pp x, pp y) {return x.b < y.b; } int ans 0;int main() {cin >>…

KafkaQ - 好用的 Kafka Linux 命令行可视化工具

鉴于并没有在网上找到比较好的linux平台的kafka可视化工具&#xff0c;今天为大家介绍一下自己开发的在 Linux 平台上使用的可视化工具KafkaQ 虽然简陋&#xff0c;主要可以实现下面的这些功能&#xff1a; 1&#xff09;查看当前topic的分片数量和副本数量 2&#xff09;查…

实战计算机网络02——物理层

实战计算机网络02——物理层 1、物理层实现的功能2、数据与信号2.1 数据通信模型2.2 通信领域常用术语2.3 模拟信号和数字信号 3、信道和调制3.1 信道3.2 单工通信、半双工通信、全双工通信3.3 调制3.4 奈式准则3.5 香农定律 4、传输媒体4.1 导向传输媒体4.2 非导向传输媒体 5、…

JEPaaS 低代码平台 j_spring_security_check SQL注入漏洞复现

0x01 产品简介 JEPaaS是一款优秀的软件平台产品,可视化开发环境,低代码拖拽式配置开发,操作极其简单,可以帮助解决Java项目80%的重复工作,让开发更多关注业务逻辑,大大提高开发效率,能帮助公司大幅节省人力成本和时间成本,同时又不失灵活性。适用于搭建 OA、ERP、CRM、…

ONNX2NCNN工具

最近部署很多onnx转ncnn的操作&#xff0c;发现还是需要有页面操作会比较好&#xff0c;而且需要查询onnx的图&#xff0c;所以写了一个工具来搭配使用 建议搭配Netron 来使用 打开模型 选择打开-》选择onnx模型 显示基础信息 查询onnx模型图 展示信息 点击“展示信息”&…

喜讯!云起无垠入选《2024中国AI大模型产业图谱1.0版》

近日&#xff0c;数据猿与上海大数据联盟联合策划并启动了“2024全年度三大策划活动”&#xff0c;经过数月的精心筹备和严格筛选&#xff0c;通过直接申报交流、深入访谈调研、外部咨询评价以及匿名访谈等多维度交叉验证的方式&#xff0c;最终完成了《2024中国AI大模型产业图…

不同进制数之间的相互转换(全面解析版)

目录 前言 1.不同进制的表示方法 2.不同进制之间的对照 3.二进制数转换为其他进制数 3.1二进制数转换为八进制数 3.2任意进制数转换为十进制数 3.3二进制数转换为十六进制数 4.其他进制数转换为二进制数 4.1八进制数转换为二进制数 4.2十进制数转换为任意进制数 4.3十…

ESP-IDF OTA升级过程中遇到的“esp_transport_read returned:-1 and errno:128”问题(1)

在笔者“ESP32-C3模组上跑通OTA升级”系列文章中,经过了一番“踩坑填坑”的过程,最终实现了OTA升级功能。每次升级都能够成功,比较稳定。 但是,当笔者添加大量业务代码(如使能蓝牙配置),使得固件的大小由之前的200~300K字节变为1.5~1.6M字节后,再次执行升级时(同样的…

x64-linux下在vscode使用vcpkg

1.使用vscode远程连接上对应的linux &#xff0c;或者直接在图形化界面上使用。 2.安装vcpkg 插件&#xff0c;然后打开插件设置。 注意&#xff1a;defalut和host的主机一定和你自己的主机一致&#xff0c;且必须符合vcpkg三元组格式&#xff0c;其中你可以选择工作台的设置&a…

编写函数isprime(int a),用来判断自变量a是否为素数,若是素数,函数返回整数1,否则返回0

int main() {int isprime(int x);int x;printf("请输入一个数\n");scanf("%d", &x);if (isprime(x)){printf("%d是素数\n",x);}else{printf("%d不是素数\n",x);} } int isprime(int a) {int i;for (i 2; i < a / 2; i){if (a%…

法考报名必看,99%高过审率证件照片电子版制作技巧

在2024年&#xff0c;法考备战已经如火如荼进行中&#xff0c;作为进入法律行业的第一步&#xff0c;参加法考的重要性不言而喻。而作为报名过程中必不可少的一环&#xff0c;报名照片要求以及证件照制作技巧更是需要我们特别重视的部分。想要在这个过程中顺利通过审核&#xf…

vue3中用setup写的数据,不能动态渲染(非响应式)解决办法

相比于2.0&#xff0c;vue3.0在新增了一个setup函数&#xff0c;我们在setup中可以写数据也可以写方法&#xff0c;就像我们以前最开始学习js一样&#xff0c;在js文件中写代码。 For instance <template><div class"person"><h2>姓名&#xff1…

必刷!!软考【系统分析师】100道高频考题(含知识点解析),轻松45+

2024上软考已经圆满结束&#xff0c;距离下半年的考试也只剩下半年不到的时间。需要备考下半年软考系分的小伙伴们可以抓紧开始准备了&#xff0c;毕竟高级科目的难度可是不低的。 今天给大家整理了——系统分析师100道高频考题 &#xff0c;都是核心重点&#xff0c;有PDF&…

音频处理1_基本概念

AI变声和音乐创作的基础 声音本质上是人类可察觉范围内的气压周期性波动, 即声波 声波是一种连续信号&#xff0c;在任意时间内的声音信号有无数个取值。对于只能读取有限长数组计算机来说&#xff0c;我们需要将连续的声音信号转换为一个离散的序列&#xff0c;即数字化表示。…

ssm情侣购物系统-计算机毕业设计源码02387

目 录 摘要 1 绪论 1.1 开发背景与意义 1.2开发意义 1.3Vue.js 主要功能 1.3论文结构与章节安排 2 情侣购物系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分…

电脑蓝屏怎么办?7个方法为你解决问题!

“我今天开电脑时&#xff0c;不知道为什么电脑突然就蓝屏了。大家有什么方法可以解决电脑蓝屏问题吗&#xff1f;” 在现代社会的快节奏中&#xff0c;电脑已经成为了我们工作和生活的重要伙伴。然而&#xff0c;当这个“伙伴”突然展现出它的“任性”一面——蓝屏时&#xff…

idea插件开发之通过纯编码方式开发页面(不使用form ui)

写在前面 本文看线如何通过纯编码方式来定义页面。 1&#xff1a;正戏 我们首先来定义一个面板&#xff0c;需要继承抽象类&#xff1a;com.intellij.openapi.ui.SimpleToolWindowPanel&#xff0c;如下&#xff1a; public class MySelfDefinePanel extends SimpleToolWin…

【Python整蛊小代码】以及打包成.exe格式过程【踩坑,避坑】

一、项目介绍 该项目为一个Python写成的整蛊小代码&#xff0c;效果是不断弹出窗口&#xff0c;并显示图片和文字。并使用 项目大致效果&#xff1a; &#xff08;图片过于搞笑&#xff0c;不宜展示&#xff09; &#xff08;无侵犯肖像权&#xff0c;禁止商用&#xff09; …

优迅医学近10亿对赌协议今年到期,前五大客户收入波动剧烈

《港湾商业观察》廖紫雯 日前&#xff0c;优迅医学生物科技&#xff08;以下简称&#xff1a;优迅医学&#xff09;递表港交所&#xff0c;保荐机构为中金公司&#xff0c;优迅医学国内运营主体为北京优迅医学检验实验室有限公司。 作为一家以平台为基础的基因科技公司&#…