将嵌套的JSON结构转换为Pandas DataFrames

  • Post category:Python

将嵌套的JSON结构转换为Pandas DataFrames需要经过以下步骤:

  1. 读取JSON文件或字符串:使用 json.loads() 读取JSON字符串或使用 json.load() 读取JSON文件。

  2. 扁平化JSON数据:使用 json_normalize() 函数将嵌套的JSON数据扁平化。

  3. 将扁平化后的JSON数据转换为DataFrames对象:使用 pandas.DataFrame() 函数将数据转换为DataFrame对象。

下面是一个实例,假设我们有一个保存有三个嵌套字典的JSON文件 data.json,其中每个字典都包含了”姓名”、”年龄”和”联系方式”三个字段,其中”联系方式”字段又由”电话”和”邮箱”两个子字段组成。

[
  {
    "姓名": "张三",
    "年龄": 20,
    "联系方式": {
      "电话": "123456789",
      "邮箱": "zhangsan@qq.com"
    }
  },
  {
    "姓名": "李四",
    "年龄": 30,
    "联系方式": {
      "电话": "987654321",
      "邮箱": "lisi@qq.com"
    }
  },
  {
    "姓名": "王五",
    "年龄": 25,
    "联系方式": {
      "电话": "567891234",
      "邮箱": "wangwu@qq.com"
    }
  }
]

我们可以按照以下方式读取、扁平化和转换JSON数据:

import json
import pandas as pd

# 读取JSON文件为字符串
with open("data.json", "r") as f:
    json_str = f.read()

# 解析JSON字符串
json_data = json.loads(json_str)

# 扁平化JSON数据
df = pd.json_normalize(json_data, "联系方式", ["姓名", "年龄"])

# 输出转换后的DataFrames对象
print(df)

运行结果如下:

        电话            邮箱   姓名  年龄
0  123456789  zhangsan@qq.com   张三  20
1  987654321      lisi@qq.com   李四  30
2  567891234    wangwu@qq.com   王五  25

在这个实例中,我们首先使用 open() 函数读取JSON文件,并使用 json.loads() 函数将JSON字符串解析为字典对象。接着,我们使用 json_normalize() 函数将嵌套的JSON结构扁平化,将 “姓名” 和 “年龄” 两个字段作为主体,并选择 “联系方式” 字段下的 “电话” 和 “邮箱” 两个子字段。最后,我们使用 print() 函数输出DataFrames对象。

总之,将嵌套的JSON结构转换为Pandas DataFrames需要按照上述三个步骤进行操作,扁平化后的DataFrames对象更易于数据操作和分析。