pandas处理json数据

本文介绍如何使用Pandas将JSON格式的数据转换为DataFrame,并提供了一个具体的示例,展示了如何读取JSON字符串并将其写入Excel文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20220726

json与字典区别
1、json 中除数据外,key和value都是字符串,要用双引号引起来;空值为null;布尔值为false/true(小写)
2、字典,key,value可单引号;空值为None;布尔值为False/True

20210831

json严格双引号
在这里插入图片描述
字典存储为json 并读取转换为dataframe

20210810

https://www.cnblogs.com/XhyTechnologyShare/p/12033690.html
读取json格式

20210729

ValueError: Expected object or value
在这里插入图片描述
必须是双引号 不能是单引号
或者是里面有其他错误格式

emeditor 可以直接检查是否有错
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

path='D:\code12temp\he_zong\\'
df=pd.read_json(path+'yuetong1.json',encoding='utf8')

字典文件 最外面需要有中括号
因为内容是unicode编码 所以通过设置编码就可以直接读出还原数据

读取json文件

20210617

ValueError: ‘lines’ keyword only valid when ‘orient’ is records

df.to_json(r’E:\金盘\百度关系抽取数据_SAOKE_DATA_chinese.json’,orient=‘records’,lines=True,force_ascii=False)
orient 只能是 records的取值形式时候,才能分行存储

在这里插入图片描述

否则会完全存成一行

在这里插入图片描述
一般都是这种 这种是一行一行处理 索引0对应第0行
Pandas read_json()时报错ValueError: Trailing data
https://blog.youkuaiyun.com/Duke_LH/article/details/84674715

今天展示一个利用pandas将json数据导入excel例子,主要利用的是pandas里的read_json函数将json数据转化为dataframe。先拿出我要处理的json字符串:

strtext='[{"ttery":"min","issue":"20130801-3391","code":"8,4,5,2,9","code1":"297734529","code2":null,"time":1013395466000},\
{"ttery":"min","issue":"20130801-3390","code":"7,8,2,1,2","code1":"298058212","code2":null,"time":1013395406000},\
{"ttery":"min","issue":"20130801-3389","code":"5,9,1,2,9","code1":"298329129","code2":null,"time":1013395346000},\
{"ttery":"min","issue":"20130801-3388","code":"3,8,7,3,3","code1":"298588733","code2":null,"time":1013395286000},\
{"ttery":"min","issue":"20130801-3387","code":"0,8,5,2,7","code1":"298818527","code2":null,"time":1013395226000}]'

pandas.read_json的语法如下

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

第一参数就是json文件路径或者json格式的字符串。

第二参数orient是表明预期的json字符串格式。orient的设置有以下几个值:

(1).‘split’ : dict like {index -> [index], columns -> [columns], data -> [values]}

这种就是有索引,有列字段,和数据矩阵构成的json格式。key名称只能是index,columns和data。

在这里插入图片描述
‘records’ : list like [{column -> value}, … , {column -> value}]

split 各种元素都分开
这种就是成员为字典的列表。如我今天要处理的json数据示例所见。构成是列字段为键,值为键值,每一个字典成员就构成了dataframe的一行数据。
‘index’ : dict like {index -> {column -> value}}

以索引为key,以列字段构成的字典为键值。如:

在这里插入图片描述
‘columns’ : dict like {column -> {index -> value}}

这种处理的就是以列为键,对应一个值字典的对象。这个字典对象以索引为键,以值为键值构成的json字符串。如下图所示:

在这里插入图片描述
这种是以列为单位进行处理
‘values’ : just the values array。

values这种我们就很常见了。就是一个嵌套的列表。里面的成员也是列表,2层的。

在这里插入图片描述
里面每个列表是对应一行的值
主要就说下这两个参数吧。下面我们回到示例中来。我们看前面可以发现示例是一个orient为records的json字符串。

这样就好处理了。看代码:

# -*- coding: utf-8 -*-
"""
Created on Sun Aug  5 09:01:38 2018
@author: FanXiaoLei
"""
import pandas as pd
strtext='[{"ttery":"min","issue":"20130801-3391","code":"8,4,5,2,9","code1":"297734529","code2":null,"time":1013395466000},\
{"ttery":"min","issue":"20130801-3390","code":"7,8,2,1,2","code1":"298058212","code2":null,"time":1013395406000},\
{"ttery":"min","issue":"20130801-3389","code":"5,9,1,2,9","code1":"298329129","code2":null,"time":1013395346000},\
{"ttery":"min","issue":"20130801-3388","code":"3,8,7,3,3","code1":"298588733","code2":null,"time":1013395286000},\
{"ttery":"min","issue":"20130801-3387","code":"0,8,5,2,7","code1":"298818527","code2":null,"time":1013395226000}]'

df=pd.read_json(strtext,orient='records')
df.to_excel('pandas处理json.xlsx',index=False,columns=["ttery","issue","code","code1","code2","time"])

records 没有行的索引 但是是以行为单位来处理的  列表里面的每个元素都是字典

最终写入excel如下图:
在这里插入图片描述

### 使用 Pandas 解析和操作 JSON 文件 #### 导入必要的库 为了能够使用 Pandas 处理 JSON 数据,首先需要导入 `pandas` 库。 ```python import pandas as pd ``` #### 加载 JSON 数据到 DataFrame 中 Pandas 提供了两种主要的方法来加载 JSON 数据:一种是从字符串中读取;另一种则是从文件路径或 URL 地址读取。这里给出两个例子说明这两种方式: - **从字符串读取** 假设有一个简单的 JSON 字符串如下所示: ```json [ {"name": "Alice", "age": 25, "city": "New York"}, {"name": "Bob", "age": 30, "city": "Los Angeles"} ] ``` 可以通过下面的方式将其转换成 DataFrame: ```python json_str = '[{"name": "Alice", "age": 25, "city": "New York"}, {"name": "Bob", "age": 30, "city": "Los Angeles"}]' df_from_string = pd.read_json(json_str) print(df_from_string) ``` - **从文件路径/URL地址读取** 如果 JSON 存储在一个本地文件或者是远程服务器上的资源,则可以直接提供该位置给 `pd.read_json()` 函数作为输入参数。 对于本地文件而言: ```python file_path = 'path/to/json/file.json' df_from_file = pd.read_json(file_path) print(df_from_file) ``` 当涉及到更复杂的嵌套结构时,可能还需要额外设置一些选项来自定义解析行为,比如指定记录路径等[^4]。 #### 将 DataFrame 转换回 JSON 格式并保存至文件 完成对数据的操作之后,有时也需要将修改后的 DataFrame 再次导出为 JSON 文件形式存储下来。这同样非常简单,只需要调用 `to_json()` 方法即可实现此功能。 ```python output_file_path = 'new_output_file.json' df.to_json(output_file_path, orient='records', lines=True) ``` 在这个过程中,还可以通过调整 `orient` 参数改变输出 JSON 的格式风格(例如:"split","table"),而 `lines=True` 表示每一行代表一条独立的 JSON 记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值