Tutorial

PythonでJSONをCSVに変換する方法:完全チュートリアルとコード例

Pythonを使用してJSONデータをCSV形式に変換する方法を学び、完全なコード例、ネストされたJSONの処理、データ処理のベストプラクティスを含みます。

2025-10-05
5 min read

🐍 PythonでJSONをCSVに変換する方法:完全チュートリアルとコード例

日常のデータ処理において、JSON形式のデータをCSVテーブルに変換する必要がある場面によく遭遇します。APIデータのエクスポート、ログファイルの分析、Excelでの可視化などです。

この記事では、Pythonを使用してJSON → CSVの変換を効率的に行う方法を紹介し、いくつかの一般的な実装方法を示します。


📘 1. JSONとCSVの主な違い

特徴JSONCSV
データ構造ツリー状、ネスト構造フラットなテーブル
可読性機械と人間の両方が読める人間にとって読みやすく、構造がシンプル
一般的な用途Web API、設定ファイルExcel、データベースのインポート/エクスポート
ファイル拡張子.json.csv

APIから返されたJSONデータをスプレッドシートで表示または分析したい場合は、CSVに変換する必要があります。


⚙️ 2. Pythonの標準ライブラリを使用したJSONからCSVへの変換

Pythonには強力なjsoncsv標準ライブラリが付属しており、追加の依存関係なしで直接変換を処理できます。

例1:基本版(フラットJSON構造)

import json
import csv

# JSONファイルを読み込み
with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# CSVファイルを書き込み用に開く
with open('output.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)

    # ヘッダーを書き込み(最初の要素のキーから抽出)
    header = data[0].keys()
    writer.writerow(header)

    # 各行のデータを書き込み
    for row in data:
        writer.writerow(row.values())

print("✅ JSONがCSVに正常に変換されました:output.csv")

入力例:

[
  {"name": "Alice", "age": 25, "city": "Shanghai"},
  {"name": "Bob", "age": 30, "city": "Beijing"}
]

出力結果(CSV):

name,age,city
Alice,25,Shanghai
Bob,30,Beijing


🧩 3. ネストされたJSONの処理

JSONにネストされたオブジェクトや配列が含まれている場合は、まず構造を「展開」する必要があります。

例2:pandas.json_normalize()を使用

import pandas as pd
import json

# ネストされたJSONを読み込み
with open('nested.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# ネストされた構造をフラットなテーブルに展開
df = pd.json_normalize(data)

# CSVにエクスポート
df.to_csv('output.csv', index=False, encoding='utf-8-sig')

print("✅ ネストされたJSONがCSVに正常に変換されました:output.csv")

入力例:

[
  {
    "user": {"name": "Alice", "id": 101},
    "stats": {"score": 98, "level": 3}
  },
  {
    "user": {"name": "Bob", "id": 102},
    "stats": {"score": 87, "level": 2}
  }
]

出力結果:

user.name,user.id,stats.score,stats.level
Alice,101,98,3
Bob,102,87,2

✅ ヒント:pandas.json_normalize()はネストされたフィールドを自動的にフラット化するため、複雑なJSONに最適です。


🚀 4. URLからJSONを読み込んでCSVにエクスポート

リモートAPIから直接JSONデータを読み込むこともできます:

import requests
import pandas as pd

url = "https://jsonplaceholder.typicode.com/users"
data = requests.get(url).json()

df = pd.json_normalize(data)
df.to_csv('users.csv', index=False, encoding='utf-8-sig')

print("✅ URLからJSONを読み込み、CSVにエクスポートしました")


🧠 5. よくある質問(FAQ)

1️⃣ ファイルの文字化けはどうすれば?

→ CSVを保存する際にencoding='utf-8-sig'を使用し、Excelで正常に中国語が表示されるようにします。

2️⃣ JSONのルートが配列でない場合は?

→ JSONが単一オブジェクト({}など)の場合は、手動で配列で包むことができます:

data = [data]

3️⃣ Excelにインポートするには?

→ Excelで「データ」→「テキスト/CSVから」→ 出力ファイルを選択します。


🧰 6. 完全なプロジェクト例

コマンドラインツールが必要な場合:

# json2csv.py
import sys
import pandas as pd

def json_to_csv(input_file, output_file):
    df = pd.read_json(input_file)
    df.to_csv(output_file, index=False, encoding='utf-8-sig')
    print(f"✅ {input_file}{output_file}に変換されました")

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("使用方法: python json2csv.py input.json output.csv")
    else:
        json_to_csv(sys.argv[1], sys.argv[2])

実行:

python json2csv.py data.json output.csv


🧭 7. まとめ

ツール使用ケース利点
csv + jsonシンプルなJSON標準ライブラリ、ゼロ依存
pandasネストされたJSON、大きなファイル強力な機能、バッチ処理サポート
requestsネットワークデータ直接API取得

たまに変換するだけの場合は、オンラインツール 👉 JsonWork.com/json-to-csv をご利用ください。

Pythonのインストール不要、貼り付け / アップロード / ダウンロードをサポート、100%ローカル処理でより安全で便利です。


2025年10月5日公開
👨‍💻

JsonWork チーム

開発者に最高のJSON処理ツールを提供することに専念

関連投稿

さらに多くの投稿が近日公開予定...

ヘルプが必要ですか?