Pandas 提供了用于解析 JSON 数据并将其转换为结构化 DataFrame 以便进行分析的工具
import pandas as pd
import requests
读取JSON文件
在pandas中,我们使用read_json函数读取JSON文件或URL。在下面的代码中,path_or_buf是JSON文件的文件路径或网页URL。
pd.read_json(path_or_buf)
创建一个DataFrame并将其转换为JSON
如果你没有JSON文件,那么创建一个小的DataFrame。
- • orient='split':分隔列、索引和数据。
- • orient='index':将每一行显示为带有其索引的键值对
df = pd.DataFrame([['a', 'b'], ['c', 'd']],
index=['row 1', 'row 2'],
columns=['col 1', 'col 2'])
print(df.to_json(orient='split'))
print(df.to_json(orient='index'))
编辑
从网络数据中读取JSON文件
你可以使用requests库从在线源获取JSON数据,然后将其转换为DataFrame。
- • requests.get(url)从URL获取数据。
- • response.json()将响应转换为Python字典/列表。
- • json_normalize()将嵌套的JSON转换为扁平表。
import pandas as pd
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
response = requests.get(url)
data = pd.json_normalize(response.json())
data.head()
编辑
在Pandas中处理嵌套JSON
有时,JSON数据会有多层结构,比如列表或字典嵌套在其他字典中,这种情况就称为嵌套JSON。要将深度嵌套的JSON转换为表格,可以使用pandas库中的json_normalize()函数,这样能更方便地以表格形式进行分析或处理。
- • json.load(f):将原始JSON加载到Python字典中。
- • json_normalize(d['programs']):提取programs键下的列表,并将其展开为列。
import json
import pandas as pd
from pandas import json_normalize
with open('/content/raw_nyc_phil.json') as f:
d = json.load(f)
nycphil = json_normalize(d['programs'])
nycphil.head(3)
编辑