【python】 pandas.DataFrame.to_json 函数

【python】 pandas.DataFrame.to_json 函数

  • 写在最前面
  • [一、什么是 JSON?](#一、什么是 JSON?)
  • [二、`to_json` 函数概述](#二、to_json 函数概述)
    • 参数详解
      • [1. `path_or_buf`](#1. path_or_buf)
      • [2. `orient`](#2. orient)
      • [4. `double_precision`](#4. double_precision)
      • [5. `force_ascii`](#5. force_ascii)
      • [6. `date_unit`](#6. date_unit)
      • [7. `default_handler`](#7. default_handler)
      • [8. `lines`](#8. lines)
      • [9. `compression`](#9. compression)
      • [10. `index`](#10. index)
      • [11. `indent`](#11. indent)
      • [12. `storage_options`](#12. storage_options)
  • 代码示例
    • [示例 1: 导出为默认 JSON 格式](#示例 1: 导出为默认 JSON 格式)
    • [示例 2: 导出为 JSON Lines 格式](#示例 2: 导出为 JSON Lines 格式)
    • [示例 3: 导出为 `orient='split'` 格式](#示例 3: 导出为 orient='split' 格式)
    • [示例 4: 使用压缩和指定浮点精度](#示例 4: 使用压缩和指定浮点精度)
    • [读取 JSON 文件](#读取 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 文件的函数。其语法如下:

python 复制代码
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':将数据分为 index、columns、data 三部分。
    • '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 格式

python 复制代码
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 文件内容将如下所示:

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 格式

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

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

json 复制代码
{"id":1,"name":"Alice","age":25}
{"id":2,"name":"Bob","age":30}
{"id":3,"name":"Charlie","age":35}

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

python 复制代码
# 导出为 'split' 格式
df.to_json('data/split.json', orient='split')

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

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

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

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

读取 JSON 文件

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

python 复制代码
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!

参考文献


欢迎大家添加好友交流。

相关推荐
Navicat中国3 分钟前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI25 分钟前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区36 分钟前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
HRBorderInsight41 分钟前
马来西亚人均收入一个月多少钱,个人薪资和家庭收入要分开看
经验分享·笔记
Pniubi1 小时前
HashMap的扩容和树化边界
java·开发语言
又見山2 小时前
本地 Markdown 与数据主权:你的笔记到底属于谁
笔记·obsidian
XCDoris2 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy3 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V3 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI3 小时前
AI英语教培智能体的开发
人工智能