Lavorare con JSON e Pandas DataFrame è comune nell’analisi dei dati, reporting e pipeline ETL. Mentre Pandas fornisce readjson per il parsing di base, può avere difficoltà con strutture profondamente annidate, file molto grandi o flussi di lavoro orientati a Excel. Qui è dove Aspose.Cells for Python aiuta. Fornisce una ricca pipeline da JSON a Excel, che puoi facilmente integrare con Pandas per ottenere DataFrame puliti per l’analisi. In questo post del blog, imparerai come convertire JSON in dataframes Pandas in Python.
Libreria Python per convertire JSON in DataFrame Pandas
Aspose.Cells for Python tramite .NET è una potente API per fogli di calcolo che non richiede Microsoft Excel. Oltre all’automazione classica di Excel, supporta l’importazione e l’esportazione diretta di JSON, rendendolo ideale quando vuoi convertire JSON in un DataFrame Pandas e successivamente salvarlo o elaborarlo in Excel.
Con Aspose.Cells, puoi:
- Importa JSON nei fogli di lavoro utilizzando
JsonUtility, con opzioni per gestire array e strutture annidate. - Convertire gli intervalli del foglio di lavoro in DataFrame Pandas per analisi e visualizzazione.
- Crea, carica e gestisci JSON all’interno di file Excel, che si adattano ai processi analitici.
- Esporta DataFrames di nuovo in Excel (XLSX, CSV, ODS, PDF) per reporting.
In sintesi, la biblioteca rende facile spostare i dati da JSON a Excel per la reportistica, mentre si utilizza Pandas per analisi più profonde. Il JsonUtility importa JSON in un foglio di lavoro e il JsonLayoutOptions controlla come gli array e gli oggetti annidati si espandono.
Convertire JSON in DataFrame
Aspose.Cells importa JSON direttamente in un foglio di lavoro. Quindi leggi la riga di intestazione e le righe di dati per costruire un DataFrame Pandas.
Segui i passaggi qui sotto per convertire JSON in un DataFrame pandas:
- Crea un workbook e ottieni il primo foglio di lavoro.
- Configura
JsonLayoutOptionsper trattare gli array come tabelle. - Importa la stringa JSON nella riga
0, colonna0. - Usa la prima riga come intestazioni delle colonne.
- Extract remaining rows as data.
- Costruisci un DataFrame Pandas.
Il seguente esempio di codice mostra come convertire JSON in un DataFrame di pandas in Python:
import pandas as pd
import aspose.cells as ac
# Crea un nuovo foglio di lavoro e ottieni il primo foglio di lavoro (indice basato su 0)
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Configura come il JSON dovrebbe essere disposto nel foglio di lavoro
options = ac.utility.JsonLayoutOptions()
options.array_as_table = True # Treat a top-level JSON array as a table (rows/columns)
# Esempio di array JSON di oggetti semplici
json_data = '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]'
# Importa JSON nel foglio di lavoro a partire dalla riga=0, colonna=0 (cella A1)
ac.utility.JsonUtility.import_data(json_data, ws.cells, 0, 0, options)
# Trova la prima riga che contiene dati (questa sarà la nostra riga di intestazione)
header_idx = ws.cells.min_data_row
# Estrai i valori dell'intestazione da quella riga da utilizzare come nomi delle colonne del DataFrame
columns = [cell.value for cell in ws.cells.rows[header_idx]]
# Estrai tutte le righe successive come dati (salta la riga dell'intestazione)
data = [
[cell.value for cell in row]
for idx, row in enumerate(ws.cells.rows)
if row and idx != header_idx
]
# Costruisci il DataFrame utilizzando le intestazioni e le righe raccolte
df = pd.DataFrame(data, columns=columns)
# Display the result
print(df)
Output
id name
0 1.0 Alice
1 2.0 Bob
Convertire JSON annidato in DataFrame Pandas
Se il tuo JSON contiene oggetti annidati, Aspose.Cells importa JSON in un foglio di lavoro utilizzando JsonUtility, che puoi poi esportare in un DataFrame. Le JsonLayoutOptions controllano come gli array e gli oggetti annidati vengono espansi.
Segui i passaggi seguenti per convertire JSON annidato in un DataFrame pandas:
- Crea un workbook e seleziona il primo foglio di lavoro.
- Imposta le proprietà richieste di
JsonLayoutOptionscomearrayastable=True,ignorearraytitle=True,ignoreobjecttitle=Trueekeptschema=True. - Import the nested JSON at row
0, column0. - Rileva l’intervallo utilizzato e legge la riga dell’intestazione su tutta l’estensione.
- Leggi tutte le righe successive lungo lo stesso intervallo (larghezza fissa).
- Costruisci il DataFrame; eventualmente esegui il cast dei dtypes (ad es.,
totalin numerico).
Il seguente esempio di codice mostra come convertire JSON annidato in un DataFrame pandas in Python:
import pandas as pd
import aspose.cells as ac
# Crea cartella di lavoro e ottieni il primo foglio di lavoro
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# Opzioni di layout per JSON annidati
opt = ac.utility.JsonLayoutOptions()
opt.array_as_table = True # Treat 'orders' array as a table (rows)
opt.ignore_array_title = True # Do not place a title row for the 'orders' array
opt.ignore_object_title = True # Do not place extra title rows for nested objects (e.g., 'buyer')
opt.kept_schema = True # Keep a stable set of columns even if some records miss fields
# Passaggio 3: Il tuo JSON annidato
nested = '''
{
"batch": "A1",
"orders": [
{"orderId": "1001", "total": "49.90", "buyer": {"city": "NYC", "zip": "10001"}},
{"orderId": "1002", "total": "79.00", "buyer": {"city": "Boston", "zip": "02108"}}
]
}
'''
# Importa in A1 (riga=0, colonna=0) utilizzando le opzioni sopra.
ac.utility.JsonUtility.import_data(nested, ws.cells, 0, 0, opt)
# Detect used range
first_row = ws.cells.min_data_row
first_col = ws.cells.min_data_column
last_row = ws.cells.max_data_row
last_col = ws.cells.max_data_column
# Leggi la riga di intestazione attraverso l'intera ampiezza della colonna utilizzata (larghezza fissa)
raw_columns = [ws.cells.get(first_row, c).value for c in range(first_col, last_col + 1)]
# Rendi sicuri i titoli: sostituisci None/vuoto con \"Colonna{n}\" e converti in str
columns = [
(str(v) if v is not None and str(v).strip() != "" else f"Column{idx + 1}")
for idx, v in enumerate(raw_columns)
]
# Leggi le righe di dati attraverso la stessa estensione (la larghezza fissa garantisce l'allineamento)
data = []
for r in range(first_row + 1, last_row + 1):
row_vals = [ws.cells.get(r, c).value for c in range(first_col, last_col + 1)]
data.append(row_vals)
# Build DataFrame
df = pd.DataFrame(data, columns=columns)
# Facoltativo: sistemare i nomi delle colonne (ad esempio, sostituire gli spazi)
df.columns = [str(c).strip() for c in df.columns]
# Typing facoltativo:
# - Mantieni i CAP come stringhe (i zeri iniziali contano)
# - Convertire i totali in numerici (forzare i non numerici a NaN)
for col in list(df.columns):
if col.lower().endswith("total"):
df[col] = pd.to_numeric(df[col], errors="coerce")
# Print
print(df)
Output
A1 1001 49.90 NYC 10001
0 None 1002 79.00 Boston 02108
Nota: Se abiliti
convertnumericordate=True, le stringhe che sembrano numeriche (ad es., totali) potrebbero essere convertite in numeri, ma i codici postali come\"02108\"possono perdere gli zeri iniziali. Tienilo impostato suFalsese hai bisogno che i codici postali siano stringhe.
Convertire Excel in DataFrame Pandas tramite JSON
Esporta qualsiasi intervallo di Excel in JSON con Aspose.Cells, quindi carica quel JSON in Pandas come un DataFrame. Questo è utile quando hai bisogno di un passaggio JSON strutturato per servizi o pipeline.
Segui i passaggi seguenti per convertire Excel in un DataFrame pandas tramite JSON:
- Crea un nuovo workbook, prendi il primo foglio di lavoro e aggiungi valori di esempio.
- Crea
JsonSaveOptionscon i valori predefiniti. - Esporta l’intervallo utilizzato in una stringa JSON con il metodo
exportrangetojson(). - Leggi la stringa JSON in un DataFrame utilizzando il metodo
pd.readjson(io.StringIO(jsontext)). - Ispeziona o elabora il DataFrame come necessario.
Il seguente esempio di codice mostra come convertire Excel in un DataFrame pandas tramite JSON in Python:
import io
import pandas as pd
from aspose.cells.utility import JsonUtility # JSON export utility
from aspose.cells import Workbook, JsonSaveOptions, License
# Crea un nuovo libro di lavoro e accedi al primo foglio di lavoro
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
# Ottieni le celle del foglio di lavoro
cells = worksheet.cells
# Populate a small table (headers + rows)
cells.get("A1").value = "Name"
cells.get("B1").value = "Age"
cells.get("C1").value = "City"
cells.get("A2").value = "Alice"
cells.get("B2").value = 25
cells.get("C2").value = "New York"
cells.get("A3").value = "Bob"
cells.get("B3").value = 30
cells.get("C3").value = "San Francisco"
cells.get("A4").value = "Charlie"
cells.get("B4").value = 35
cells.get("C4").value = "Los Angeles"
# Imposta le opzioni di salvataggio JSON (i valori predefiniti vanno bene per una tabella semplice)
json_save_options = JsonSaveOptions()
# Esporta l'intervallo utilizzato in una stringa JSON
# maxdisplayrange cattura l'intera regione rettangolare che contiene i dati
json_text = JsonUtility.export_range_to_json(cells.max_display_range, json_save_options)
# Leggi la stringa JSON in un DataFrame Pandas
# I panda possono analizzare una stringa JSON direttamente
df = pd.read_json(io.StringIO(json_text))
# Usa il DataFrame
print(df)
Output
Name Age City
0 Alice 25 New York
1 Bob 30 San Francisco
2 Charlie 35 Los Angeles
Ottieni una Licenza Gratuita
Valuta Aspose.Cells for Python tramite .NET senza limiti di funzionalità applicando una licenza temporanea gratuita. Visita la pagina della licenza temporanea per sbloccare tutte le funzionalità, incluso l’importazione JSON (JsonUtility), il controllo del layout (JsonLayoutOptions), la preservazione dello schema e la conversione numerica/data.
Risorse gratuite aggiuntive
Puoi utilizzare le risorse qui sotto per approfondire l’importazione di JSON, le opzioni di layout e altre manipolazioni di Excel con Aspose.Cells for Python.
Conclusione
Convertire JSON in DataFrame Pandas diventa semplice con Aspose.Cells for Python. Ottieni una gestione affidabile per strutture annidate, opzioni per la stabilità dello schema e un percorso semplice per l’esportazione in Excel quando necessario. Combina la flessibilità di Pandas con il pipeline JSON/Excel in Aspose.Cells per semplificare l’elaborazione dei dati e sbloccare potenti analisi in Python.
Se hai domande, visita il nostro free support forum.Siamo felici di aiutarti.
