Python神器Pandas 之 JSON(python .json)
liuian 2025-04-06 18:06 16 浏览
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)
相关推荐
- x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!
-
还在为命令行下处理JSON数据烦恼吗?jellex来了!它是一款基于终端的交互式JSON和JSONLines数据处理工具,让你用熟悉的Python语法,轻松过滤、转换和探索JSO...
- 一篇长文带你在Python里玩转Json数据
-
Json简介Json(JavaScriptObjectNotation)很多网站都会用到Json格式来进行数据的传输和交换,就像上篇我提到的网易云音乐接口,它们返回的数据都是Json格式的。这因为...
- Python JSON 魔法手册:数据转换的终极艺术
-
对话实录小白:(崩溃)我从API拿到了JSON数据,怎么变成Python对象?专家:(掏出魔法书)用json模块,轻松实现数据转换!JSON基础三连击1.字符串Python对...
- Python JSON 详解教程(python json())
-
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式(lightweightdatainterchangeformat)常用于Web应用、配置文件(co...
- Python 数据的 JSON 格式序列化及反序列化
-
在Python中,将数据转换为JSON格式非常简单,可以使用内置的json模块。json模块提供了json.dumps()和json.dump()方法,用于将Python对象...
- 如何使Python类可JSON序列化(python json 类)
-
技术背景在Python开发中,JSON(JavaScriptObjectNotation)是一种常用的数据交换格式。然而,Python的json模块默认只能序列化一些基本数据类型,如字典、列表、字...
- 详细介绍一下Python如何对JSON格式数据进行处理?
-
在Python中对于JSON数据的处理是在日常开发中的常见需求之一。通常情况下,对JSON数据的处理主要涉及到如下的的几个步骤对于JSON数据的解析操作对于JSON数据的处理操作对于JSON数据的格式...
- Python 字典l转换成 JSON(python转化字典)
-
本文需要5分钟。如果对您有用可以点赞评论关注.Python字典到JSONJSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它基于ECMAScrip...
- 打造熟悉的VS界面风格(vs界面设计美化)
-
用惯了老机子的VS界面,换新机子时,各种不适应。现在重新打造老款样式:1)下载VisualStudio2013ColorThemeEditorhttps://marketplace.vis...
- 办公小技巧:全部亮相 让Excel单元格完全显示文本
-
平时我们在使用Excel制作表格的时候,经常会遇到由于文本内容较多,导致这些内容无法在一个单元格中完全显示。常规的方法是将单元格设置为“自动换行”,但是这样会影响整个文件的美观。下例是某小区的入住登记...
- WinForms 中的 CheckBox 控件使用指南
-
在WinForms中,CheckBox控件是一个允许用户选择或取消选择的单选按钮。它通常用于表示布尔值(真/假)或允许多选的情况。以下是如何使用CheckBox控件的一些基本信息和示例代码。创建...
- 图片转文字--四种OCR工具的安装和使用
-
本文仅测试简单的安装和使用,下一步应该是测试不同数据集下的检测准确率和检测效率,敬请期待。作者的系统环境是:笔记本:ThindPadP520OS:win11显卡:QuadroP520一、EasyO...
- C# 给Word每一页设置不同图片水印
-
Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法。下面,将以C#代码为例,对W...
- 集成的面向对象控件Xtreme Controls正式发布v17.0.0
-
CodejockXtremeControls为Windows图形用户软件工程师提供众多的有关MFC的控件产品,该产品是通过完全测试并专门为图形用户设计的一款专业控件。它是一款集成了面向对象的控件被...
- Win10 Build 10061老问题修复新问题来
-
|责编:刘菲菲【中关村在线软件资讯】4月23日消息:微软今天正式推送了Windows10Build10061预览版这个版本除了正常的功能更新和调整外,还修复了多个bug。其中一部分对于开发者开...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
python使用fitz模块提取pdf中的图片
-
《人人译客》如何规划你的移动电商网站(2)
-
Jupyterhub安装教程 jupyter怎么安装包
-
- 最近发表
-
- x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!
- 一篇长文带你在Python里玩转Json数据
- Python JSON 魔法手册:数据转换的终极艺术
- Python JSON 详解教程(python json())
- Python 数据的 JSON 格式序列化及反序列化
- 如何使Python类可JSON序列化(python json 类)
- 详细介绍一下Python如何对JSON格式数据进行处理?
- Python 字典l转换成 JSON(python转化字典)
- 打造熟悉的VS界面风格(vs界面设计美化)
- 办公小技巧:全部亮相 让Excel单元格完全显示文本
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- table.render (33)
- uniapp textarea (33)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- react-admin (33)
- vscode切换git分支 (35)
- vscode美化代码 (33)
- python bytes转16进制 (35)