Pandas快速将JSON列转换为Pandas dataframe

Pandas快速将JSON列转换为Pandas dataframe

在本文中,我们将介绍如何使用Python的Pandas库来快速将JSON列转换为Pandas dataframe。我们将讨论使用Pandas处理JSON数据的基础知识,并提供一些实用的例子进行说明。

阅读更多:Pandas 教程

关于Pandas库

Pandas是一个用于数据分析的开源Python库。它提供了丰富的数据结构和函数,使得数据处理变得更加快捷和简单。Pandas最基本的数据结构是Series和DataFrame。Series是一种一维数组,而DataFrame则是二维表格。

使用Pandas处理JSON数据

在Python中,我们可以使用json模块来处理JSON数据。Pandas也提供了一个方便的函数pandas.read_json()来读取JSON数据。这个函数可以直接将JSON数据转换为DataFrame。

下面是一个示例JSON文件,我们将演示如何将其转换为Pandas dataframe:

{
  "fruit": "Apple",
  "size": "Large",
  "color": "Red"
}
Python

我们可以使用以下代码将它转换为Pandas dataframe:

import pandas as pd

json_data = {
  "fruit": "Apple",
  "size": "Large",
  "color": "Red"
}

df = pd.DataFrame.from_records([json_data])
print(df)
Python

输出结果为:

    fruit   size color
0   Apple  Large   Red
Python

从JSON列创建DataFrame

有时,我们需要将包含JSON字符串的列转换为Pandas dataframe。在这种情况下,我们可以使用pandas.json_normalize()函数。该函数将JSON数据规范化为扁平形式,使其易于转换为Pandas dataframe。

下面是一个包含JSON列的示例数据:

+------+----------------------------------+
|  id  |              json_data            |
+------+----------------------------------+
|  1   | {"fruit": "Apple", "size": "L"}   |
|  2   | {"fruit": "Banana", "size": "M"}  |
|  3   | {"fruit": "Orange", "size": "S"}  |
+------+----------------------------------+
Python

我们可以使用以下代码将其转换为Pandas dataframe:

import pandas as pd

data = {
  "id": [1, 2, 3],
  "json_data": [
    {"fruit": "Apple", "size": "L"},
    {"fruit": "Banana", "size": "M"},
    {"fruit": "Orange", "size": "S"}
   ]
}

df = pd.DataFrame(data)
df = pd.concat([df.drop(['json_data'], axis=1), df['json_data'].apply(pd.Series)], axis=1)
print(df)
Python

输出结果为:

   id   fruit size
0   1   Apple    L
1   2  Banana    M
2   3  Orange    S
Python

使用json.loads()函数

我们还可以使用Python标准库中的json.loads()函数来将包含JSON字符串的列转换为Pandas dataframe。该函数将JSON字符串转换为Python对象,允许我们使用正常的Python操作。

下面是一个包含JSON列的示例数据:

+------+----------------------------------+
|  id  |              json_data            |
+------+----------------------------------+
|  1   | {"fruit": "Apple", "size": "L"}   |
|  2   | {"fruit": "Banana", "size": "M"}  |
|  3   | {"fruit": "Orange", "size": "S"}  |
+------+----------------------------------+
Python

我们可以使用以下代码将其转换为Pandas dataframe:

import json
import pandas as pd

data = {
  "id": [1, 2, 3],
  "json_data": [
    '{"fruit": "Apple", "size": "L"}',
    '{"fruit": "Banana", "size": "M"}',
    '{"fruit": "Orange", "size": "S"}'
   ]
}

df = pd.DataFrame(data)
df = pd.concat([df.drop(['json_data'], axis=1), 
                df['json_data'].apply(json.loads).apply(pd.Series)], axis)
Python
  1. 输出结果为:
   id   fruit size
0   1   Apple    L
1   2  Banana    M
2   3  Orange    S
Python
  1. 在许多情况下,我们需要从JSON数据中选择特定的键,并将它们转换为Pandas dataframe。在这种情况下,我们可以使用pandas.json_normalize()函数,并将选定的键作为参数传递给该函数。

下面是一个示例JSON数据:

[
  {
    "name": "John",
    "age": 30,
    "address": {
      "street": "123 Main St",
      "city": "New York",
      "state": "NY"
    }
  },
  {
    "name": "Jane",
    "age": 25,
    "address": {
      "street": "456 Park Ave",
      "city": "San Francisco",
      "state": "CA"
    }
  }
]
JSON

我们可以使用以下代码选择”name”和”age”键,并将它们转换为Pandas dataframe:

import pandas as pd
import json

json_data = [
  {
    "name": "John",
    "age": 30,
    "address": {
      "street": "123 Main St",
      "city": "New York",
      "state": "NY"
    }
  },
  {
    "name": "Jane",
    "age": 25,
    "address": {
      "street": "456 Park Ave",
      "city": "San Francisco",
      "state": "CA"
    }
  }
]

df = pd.json_normalize(json_data, ['name', 'age'])
print(df)
Python

输出结果为:

    name  age
0   John   30
1   Jane   25
Python

总结

在本文中,我们讨论了如何使用Pandas库来快速将JSON列转换为Pandas dataframe。我们介绍了一些基本的Pandas函数,并提供了一些实用的例子进行说明。希望这篇文章能够帮助您更好地理解如何在Python中处理JSON数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册