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)