Python で j=JSON を CSV に変換する

Manav Narula 2023年1月30日
  1. Python で Pandas DataFrames to_csv() メソッドを使用して JSON を CSV に変換する
  2. JSON を CSV ファイルに変換するには csv モジュールを使用する
Python で j=JSON を CSV に変換する

JSON は JavaScript Object Notation の略です。これは JavaScript のオブジェクトのフォーマットに基づいており、構造化されたデータを表現するためのエンコーディング技術です。最近では特にサーバや Web アプリケーション間でデータを共有するために広く利用されています。

CSV ファイルは、Excel スプレッドシートのような表形式でデータを保存するために使用されます。

このチュートリアルでは、JSON データを CSV ファイルに変換する方法を学びます。

Python で Pandas DataFrames to_csv() メソッドを使用して JSON を CSV に変換する

このメソッドでは、まず JSON を Pandas の DataFrame に変換し、そこから to_csv() メソッドを使って CSV ファイルに変換します。JSON を DataFrame に変換するために、Python の json ライブラリで提供されている json.loads() 関数を使って JSON の文字列を読み込みます。そして、この JSON オブジェクトを json_normalize() 関数に渡し、必要なデータを含む Pandas DataFrame を返します。

次のコードスニペットでその方法を説明します。

import pandas as pd
import json

data = """
{
"Results":
         [
         { "id": "1", "Name": "Jay" },
         { "id": "2", "Name": "Mark" },
         { "id": "3", "Name": "Jack" }
         ],
"status": ["ok"]
}
"""

info = json.loads(data)

df = pd.json_normalize(info["Results"])

df.to_csv("samplecsv.csv")

作成した CSV ファイルの内容は以下の通りです。

,id,Name
0,1,Jay
1,2,Mark
2,3,Jack

JSON を CSV ファイルに変換するには csv モジュールを使用する

この方法では、CSV ファイルの読み書きに使用する Python の csv ライブラリを使用します。まず、先ほどのメソッドと同様に JSON データを読み込む。ファイルを書き込みモードで開き、csv モジュールの DictWriter() を使って、JSON データをファイルにマッピングして書き込むためのオブジェクトを作成します。fieldnames はキーであり、writerows() 関数を使って行を書き込む際にデータと照合されます。

以下のコードスニペットは、上記のメソッドを実装する方法を示しています。

import csv
import json

data = """
{
"Results":
         [
         { "id": "1", "Name": "Jay" },
         { "id": "2", "Name": "Mark" },
         { "id": "3", "Name": "Jack" }
         ],
"status": ["ok"]
}
"""

info = json.loads(data)["Results"]

print(info[0].keys())

with open("samplecsv.csv", "w") as f:
    wr = csv.DictWriter(f, fieldnames=info[0].keys())
    wr.writeheader()
    wr.writerows(info)
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python JSON

関連記事 - Python CSV