PythonでJSONデータをCSVファイルに変換する方法

PythonでJSONデータをCSVファイルに変換することは、データ操作や分析において一般的な作業です。 JSON(JavaScript Object Notation)は、人間と機械の両方にとって読み書きが容易なため、データ交換に広く利用される形式です。CSV(カンマ区切り値)は表形式データを保存するためのシンプルな形式であり、データ分析や可視化で広く使用されています。このガイドでは、Pythonで様々な方法を用いてJSONデータをCSVファイルに変換する方法を示します。

なぜJSONをCSVに変換するのか?

変換プロセスに入る前に、その背景にある理由を理解することが重要です。JSONとCSVはそれぞれ異なる目的を果たします:

  • JSON: 階層的またはネストされたデータ構造に最適。ウェブアプリケーションでのデータ交換に一般的に使用される。
  • CSV:フラットな表形式データに最適。データ分析ツールやスプレッドシートアプリケーションで広く使用されています。

JSONとCSVの長所と短所を理解することで、ニーズに最適な形式を選択できます。

方法1:csvおよびjsonライブラリの使用

Pythonの組み込みcsvおよびjsonライブラリは、JSONデータをCSVに変換する簡便な方法を提供します。

      import json
import csv

# サンプル JSON データ
json_data = '''
[
    {"name": "John", "age": 30, "city": "New York"},
    {"name": "Anna", "age": 22, "city": "London"},
    {"name": "Mike", "age": 32, "city": "Chicago"}
]
'''

# JSONデータのパース
data = json.loads(json_data)

# CSVファイルを書き込みモードで開く
with open('output.csv', 'w', newline='') as csv_file:
    # CSVライターオブジェクトの作成
    csv_writer = csv.writer(csv_file)
    
    # ヘッダー行を書き込む
    header = data[0].keys()
    csv_writer.writerow(header)
    
    # データ行を書き込む
    for row in data:
        csv_writer.writerow(row.values())
    

この方法はJSONデータを読み取り、Python辞書にパースした後、CSVファイルに書き出します。

方法2:pandasの使用

pandasはデータ操作と分析のための強力なライブラリです。これにより変換プロセスが容易かつ効率的に行えます。

      import pandas as pd

# サンプルJSONデータ
json_data = '''
[
    {"name": "John", "age": 30, "city": "New York"},
    {"name": "Anna", "age": 22, "city": "London"},
    {"name": "Mike", "age": 32, "city": "Chicago"}
]
'''

# JSONデータをDataFrameに読み込み
df = pd.read_json(json_data)

# DataFrameをCSVファイルに書き出し
df.to_csv('output.csv', index=False)
    

Pandasはわずか数行のコードで変換を処理するため、複雑なデータ操作タスクに最適な選択肢です。

方法3: ネストされたJSONを含むcsvjsonの使用

ネストされたJSON構造を扱うには、変換前にデータを平坦化する必要があります。この目的にはpandasのjson_normalize関数が使用できます

      import pandas as pd
from pandas import json_normalize

# サンプルのネストされたJSONデータ
nested_json_data = '''
[
    {
        "name": "John",
        "age": 30,
        "address": {"city": "New York", "zip": "10001"}
    },
    {
        "name": "Anna",
        "age": 22,
        "address": {"city": "London", "zip": "SW1A"}
    }
]
'''

# JSONデータの読み込みと正規化
df = pd.json_normalize(json.loads(nested_json_data))

# DataFrameをCSVファイルに書き出し
df.to_csv('output.csv', index=False)

    

この手法は複雑なJSON構造をフラットなCSV形式に変換するのに有用です。

JSON vs. XML

データ交換にはJSONとXMLの両方が使用されますが、JSONは一般的に読み書きが容易です。一方、XMLは複雑なスキーマを定義できるため、より強力な場合があります。JSONとXMLの違いを理解することで、プロジェクトに適した形式を選択できます。

結論

PythonでJSONデータをCSVに変換する作業は、csvjsonpandasなどのライブラリを使用すれば簡単なプロセスです。各方法には利点があり、選択はデータの複雑さと具体的なニーズによって異なります。JSONとCSVの比較に関する情報に興味がある場合は、こちらの記事をお読みください。

Bright Dataに今すぐ登録し、最先端のウェブスクレイピング製品を探索しましょう。

20,000+ 人以上のお客様に世界中で信頼されています

準備はできましたか?