百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Python神器Pandas 之 JSON(python .json)

liuian 2025-04-06 18:06 11 浏览

Pandas 提供了强大的方法来处理 JSON 格式的数据,支持从 JSON 文件或字符串中读取数据并将其转换为 DataFrame,以及将 DataFrame 转换回 JSON 格式。 使用Pandas加载JSON数据其实非常简单,直接使用`read_json`函数即可。不过,需要注意的是‘orient`参数,它可以根据JSON数据的组织方式选择不同的值。常见的选项有:`split`、`records`、`index`、`columns`和`values`。
此外,Pandas还提供了一个非常实用的方法`json_normalize`,可以灵活地加载不同格式的JSON数据。无论你的JSON数据是什么结构,这个方法都能帮你轻松搞定。

操作

方法

说明

从 JSON 文件/字符串读取数据

pd.read_json()

从 JSON 数据中读取并加载为 DataFrame

将 DataFrame 转换为 JSON

DataFrame.to_json()

将 DataFrame 转换为 JSON 格式的数据,可以指定结构化方式

支持 JSON 结构化方式

orient 参数

支持多种结构化方式,如 split、records、columns

pd.read_json() - 读取 JSON 数据

pd.read_json() 用于从 JSON 格式的数据中读取并加载为一个 DataFrame。它支持从 JSON 文件、JSON 字符串或 JSON 网址中加载数据。

语法格式:

import pandas as pd

df = pd.read_json(
    path_or_buffer,      # JSON 文件路径、JSON 字符串或 URL
    orient=None,         # JSON 数据的结构方式,默认是 'columns'
    dtype=None,          # 强制指定列的数据类型
    convert_axes=True,   # 是否转换行列索引
    convert_dates=True,  # 是否将日期解析为日期类型
    keep_default_na=True # 是否保留默认的缺失值标记
)

完整形式:

pandas.read_json(path_or_buf=None, orient=None, typ='frame', dtype=None, convert_axes=None, convert_dates=True, keep_default_dates=True, numpy=False, precise_float=False, date_unit=None, encoding=None, encoding_errors='strict', lines=False, chunksize=None, compression='infer', nrows=None, storage_options=None)

参数说明:

参数

说明

默认值

path_or_buffer

JSON 文件的路径、JSON 字符串或 URL

必需参数

orient

定义 JSON 数据的格式方式。常见值有 split、records、index、columns、values。

None(根据文件自动推断)

dtype

强制指定列的数据类型

None

convert_axes

是否将轴转换为合适的数据类型

True

convert_dates

是否将日期解析为日期类型

True

keep_default_na

是否保留默认的缺失值标记(如 NaN)

True

常见的 orient 参数选项:

orient 值

JSON 格式示例

描述

split

{"index":["a","b"],"columns":["A","B"],"data":[[1,2],[3,4]]}

使用键 index、columns 和 data 结构

records

[{"A":1,"B":2},{"A":3,"B":4}]

每个记录是一个字典,表示一行数据

index

{"a":{"A":1,"B":2},"b":{"A":3,"B":4}}

使用索引为键,值为字典的方式

columns

{"A":{"a":1,"b":3},"B":{"a":2,"b":4}}

使用列名为键,值为字典的方式

values

[[1,2],[3,4]]

只返回数据,不包括索引和列名

从 JSON 文件加载数据:

实例

import pandas as pd
df = pd.read_json('data.json')
print(df.to_string())

to_string() 用于返回 DataFrame 类型的数据,我们也可以直接处理 JSON 字符串。

将 DataFrame 转换为 JSON

DataFrame.to_json() - 将 DataFrame 转换为 JSON 数据

to_json() 方法用于将 DataFrame 转换为 JSON 格式的数据,可以指定 JSON 的结构化方式。

语法格式:

df.to_json(
    path_or_buffer=None,    # 输出的文件路径或文件对象,如果是 None 则返回 JSON 字符串
    orient=None,            # JSON 格式方式,支持 'split', 'records', 'index', 'columns', 'values'
    date_format=None,       # 日期格式,支持 'epoch', 'iso'
    default_handler=None,   # 自定义非标准类型的处理函数
    lines=False,            # 是否将每行数据作为一行(适用于 'records' 或 'split')
    encoding='utf-8'        # 编码格式
)

完整形式:

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='infer', index=True, indent=None, storage_options=None)[source]

参数说明:

参数

说明

默认值

path_or_buffer

输出的文件路径或文件对象,若为 None,则返回 JSON 字符串

None

orient

指定 JSON 格式结构,支持 split、records、index、columns、values

None(默认是 columns)

date_format

日期格式,支持 'epoch' 或 'iso' 格式

None

default_handler

自定义处理非标准类型(如 datetime 等)的处理函数

None

lines

是否将每行数据作为一行输出(适用于 records 或 split)

False

encoding

输出文件的编码格式

'utf-8'

实例

import pandas as pd

# 创建 DataFrame
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
})

# 将 DataFrame 转换为 JSON 字符串
json_str = df.to_json()
print(json_str)

将 DataFrame 转换为 JSON 文件(指定 orient='records'):

实例

import pandas as pd
# 创建 DataFrame
df
= pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
})
# 将 DataFrame 转换为 JSON 文件,指定 orient='records'
df.
to_json('data.json', orient='records', lines=True)
# 输出生成的文件内容:
# [
# {"Name":"Alice","Age":25,"City":"New York"},
# {"Name":"Bob","Age":30,"City":"Los Angeles"},
# {"Name":"Charlie","Age":35,"City":"Chicago"}
# ]

将 DataFrame 转换为 JSON 并指定日期格式:

实例

import pandas as pd
# 创建 DataFrame,包含日期数据
df
= pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Date': pd.to_datetime(['2021-01-01', '2022-02-01', '2023-03-01']),
'Age': [25, 30, 35]
})
# 将 DataFrame 转换为 JSON,并指定日期格式为 'iso'
json_str
= df.to_json(date_format='iso')
print(json_str)

相关推荐

GANs为何引爆机器学习?这篇基于TensorFlow的实例教程为你解惑!

「机器人圈导览」:生成对抗网络无疑是机器学习领域近三年来最火爆的研究领域,相关论文层出不求,各种领域的应用层出不穷。那么,GAN到底如何实践?本文编译自Medium,该文作者以一朵玫瑰花为例,详细阐...

高丽大学等机构联合发布StarGAN:可自定义表情和面部特征

原文来源:arXiv、GitHub作者:YunjeyChoi、MinjeChoi、MunyoungKim、Jung-WooHa、SungKim、JaegulChoo「雷克世界」编译:嗯~...

TensorFlow和PyTorch相继发布最新版,有何变化

原文来源:GitHub「机器人圈」编译:嗯~阿童木呀、多啦A亮Tensorflow主要特征和改进在Tensorflow库中添加封装评估量。所添加的评估量列表如下:1.深度神经网络分类器(DNNCl...

「2022 年」崔庆才 Python3 爬虫教程 - 深度学习识别滑动验证码缺口

上一节我们使用OpenCV识别了图形验证码躯壳欧。这时候就有朋友可能会说了,现在深度学习不是对图像识别很准吗?那深度学习可以用在识别滑动验证码缺口位置吗?当然也是可以的,本节我们就来了解下使用深度...

20K star!搞定 LLM 微调的开源利器

LLM(大语言模型)微调一直都是老大难问题,不仅因为微调需要大量的计算资源,而且微调的方法也很多,要去尝试每种方法的效果,需要安装大量的第三方库和依赖,甚至要接入一些框架,可能在还没开始微调就已经因为...

大模型DeepSeek本地部署后如何进行自定义调整?

1.理解模型架构a)查看深度求索官方文档或提供的源代码文件,了解模型的结构、输入输出格式以及支持的功能。模型是否为预训练权重?如果是,可以在预训练的基础上进行微调(Fine-tuning)。是否需要...

因配置不当,约5000个AI模型与数据集在公网暴露

除了可访问机器学习模型外,暴露的数据还可能包括训练数据集、超参数,甚至是用于构建模型的原始数据。前情回顾·人工智能安全动态向ChatGPT植入恶意“长期记忆”,持续窃取用户输入数据多模态大语言模型的致...

基于pytorch的深度学习人员重识别

基于pytorch的深度学习人员重识别Torchreid是一个库。基于pytorch的深度学习人员重识别。特点:支持多GPU训练支持图像的人员重识别与视频的人员重识别端到端的训练与评估简单的re...

DeepSeek本地部署:轻松训练你的AI模型

引言:为什么选择本地部署?在AI技术飞速发展的今天,越来越多的企业和个人希望将AI技术应用于实际场景中。然而,对于一些对数据隐私和计算资源有特殊需求的用户来说,云端部署可能并不是最佳选择。此时,本地部...

谷歌今天又开源了,这次是Sketch-RNN

前不久,谷歌公布了一项最新技术,可以教机器画画。今天,谷歌开源了代码。在我们研究其代码之前,首先先按要求设置Magenta环境。(https://github.com/tensorflow/magen...

Tensorflow 使用预训练模型训练的完整流程

前面已经介绍了深度学习框架Tensorflow的图像的标注和训练数据的准备工作,本文介绍一下使用预训练模型完成训练并导出训练的模型。1.选择预训练模型1.1下载预训练模型首先需要在Tensorf...

30天大模型调优学习计划(30分钟训练大模型)

30天大模型调优学习计划,结合Unsloth和Lora进行大模型微调,掌握大模型基础知识和调优方法,熟练应用。第1周:基础入门目标:了解大模型基础并熟悉Unsloth等工具的基本使用。Day1:大模...

python爬取喜马拉雅音频,json参数解析

一.抓包分析json,获取加密方式1.抓包获取音频界面f12打开抓包工具,播放一个(非vip)视频,点击“媒体”单击打开可以复制URL,发现就是我们要的音频。复制“CKwRIJEEXn-cABa0Tg...

五、JSONPath使用(Python)(json数据python)

1.安装方法pipinstalljsonpath2.jsonpath与Xpath下面表格是jsonpath语法与Xpath的完整概述和比较。Xpathjsonpath概述/$根节点.@当前节点...

Python网络爬虫的时候json=就是让你少写个json.dumps()

大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Python网络爬虫的问题,提问截图如下:登录请求地址是这个:二、实现过程这里【甯同学】给了一个提示,如下所示:估计很多小伙伴和...