如何在 Python 中将 JSON 数据转换为 CSV 文件?

在 Python 中将 JSON 数据转换为 CSV 文件是数据操作和分析的常见做法。JSON(JavaScript 对象表示法)易于人类和机器读写,是一种流行的数据交换格式。CSV(逗号分隔值)是一种存储表格数据的简单格式,广泛用于数据分析和可视化。本指南将向您展示如何使用各种方法在 Python 中将 JSON 数据转换为 CSV 文件。

为什么要将 JSON 转换为 CSV?

在开始转换之前,务必了解其背后的原因。JSON 和 CSV 具有不同的用途:

  • JSON:适用于分层或嵌套数据结构。它通常用于 Web 应用程序中的数据交换。
  • CSV:最适合扁平的表格数据。它广泛用于数据分析工具和电子表格应用程序。

了解 JSON 与 CSV 的优势和劣势有助于您决定最适合您需要的格式。

方法 1:使用 csvjson

Python 内置的 csvjson 库提供了一种将 JSON 数据转换为 CSV 格式的直接方法。

      import json
import csv

# Sample JSON data
json_data = '''
[
    {"name": "John", "age": 30, "city": "New York"},
    {"name": "Anna", "age": 22, "city": "London"},
    {"name": "Mike", "age": 32, "city": "Chicago"}
]
'''

# Parse the JSON data
data = json.loads(json_data)

# Open a CSV file for writing
with open('output.csv', 'w', newline='') as csv_file:
    # Create a CSV writer object
    csv_writer = csv.writer(csv_file)
    
    # Write the header row
    header = data[0].keys()
    csv_writer.writerow(header)
    
    # Write the data rows
    for row in data:
        csv_writer.writerow(row.values())
    

此方法读取 JSON 数据,将其解析为 Python 字典,然后将其写入 CSV 文件。

方法 2:使用 pandas

Pandas 是用于数据操作和分析的强大库。它让转换变得简单而高效。

      import pandas as pd

# Sample JSON data
json_data = '''
[
    {"name": "John", "age": 30, "city": "New York"},
    {"name": "Anna", "age": 22, "city": "London"},
    {"name": "Mike", "age": 32, "city": "Chicago"}
]
'''

# Load the JSON data into a DataFrame
df = pd.read_json(json_data)

# Write the DataFrame to a CSV file
df.to_csv('output.csv', index=False)
    

Pandas 仅用几行代码即可处理转换,因此成为复杂数据操作任务的首选方案。

方法 3:使用 csvjson 以及嵌套 JSON

处理嵌套的 JSON 结构要求在转换之前对数据实施扁平化处理。pandas 中的 json_normalize 函数可用于此目的。

      import pandas as pd
from pandas import json_normalize

# Sample nested JSON data
nested_json_data = '''
[
    {
        "name": "John",
        "age": 30,
        "address": {"city": "New York", "zip": "10001"}
    },
    {
        "name": "Anna",
        "age": 22,
        "address": {"city": "London", "zip": "SW1A"}
    }
]
'''

# Load and normalize the JSON data
df = pd.json_normalize(json.loads(nested_json_data))

# Write the DataFrame to a CSV file
df.to_csv('output.csv', index=False)

    

此方法对于将复杂的 JSON 结构转换为扁平的 CSV 格式很有用。

JSON 与XML

虽然 JSON 和 XML 都用于数据交换,但 JSON 通常更易于读写。然而,XML 能够定义复杂的模式,因此可能更加强大。了解 JSON 和 XML 之间的差异有助于为项目选择适当的格式。

结语

使用 csvjsonpandas 等库,在 Python 中将 JSON 数据转换为 CSV 格式的操作比较简单。每种方法都各有优点,选择哪个取决于数据的复杂程度和具体需求。如果您对 JSON 与 CSV 差异的相关信息感兴趣,请阅读这篇文章

立即注册 Bright Data,了解顶级网页抓取产品。

想要立即开始使用?