HOWTO · Python

Da JSON a CSV in Python

Questo tutorial mostra come convertire JSON in un file CSV in Python.

In questa pagina

JSON sta per JavaScript Object Notation. Si basa sul formato degli oggetti in JavaScript ed è una tecnica di codifica per rappresentare i dati strutturati. È ampiamente utilizzato in questi giorni, soprattutto per la condivisione di dati tra server e applicazioni web.

Un file CSV viene utilizzato per archiviare i dati in un formato tabulare come i fogli di calcolo Excel.

In questo tutorial impareremo come convertire i dati JSON in un file CSV.

Usa il metodo Pandas DataFrames to_csv() per convertire JSON in CSV in Python

In questo metodo, convertiremo prima il JSON in un Pandas DataFrame e da lì lo convertiremo in un file CSV utilizzando il metodo to_csv(). Possiamo leggere la stringa JSON utilizzando la funzione json.loads() fornita nella libreria json in Python per convertire JSON in un DataFrame. Quindi passiamo questo oggetto JSON alla funzione json_normalize() che restituirà un Pandas DataFrame contenente i dati richiesti.

Il seguente frammento di codice spiegherà come lo facciamo.

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")

Il contenuto del file CSV creato è di seguito.

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

Utilizza il modulo csv per convertire JSON in un file CSV

In questo metodo, useremo la libreria csv in Python che è usata per leggere e scrivere file CSV. Innanzitutto, leggeremo i dati JSON come abbiamo fatto nel metodo precedente. Apriamo un file in modalità di scrittura e usiamo il DictWriter() dal modulo csv per creare un oggetto che ci permette di mappare e scrivere dati JSON nel file. I fieldnames sono chiavi che vengono identificate e abbinate ai dati quando scriviamo righe usando la funzione writerows().

Il seguente frammento di codice mostrerà come implementare il metodo precedente:

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)