0Pricing
Pandas & NumPy Academy · Lezione

Lettura di file Excel e JSON

Importi cartelle di lavoro Excel con pd.read_excel e record JSON con pd.read_json, gestendo le varianti di formato più comuni.

Lettura di file Excel e JSON è una lezione Pandas & NumPy Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Pandas & NumPy Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Pandas & NumPy Academy include 4 lezioni in totale.

Perché Excel e JSON sono importanti

Sebbene il CSV sia il formato universale, i file Excel (.xlsx/.xls) sono il formato predominante per i dati aziendali condivisi tramite e-mail e strumenti di reportistica. JSON è il formato nativo delle API REST e dei database NoSQL. Pandas mette a disposizione pd.read_excel() e pd.read_json(), che rispecchiano l'API del lettore CSV, perciò le competenze acquisite si trasferiscono direttamente.

import pandas as pd

# The three most common load functions share the same philosophy
df_csv   = pd.read_csv('data.csv')
df_excel = pd.read_excel('data.xlsx')
df_json  = pd.read_json('data.json')

Installare il motore Excel

Per leggere i file Excel è necessario un motore: openpyxl per i file .xlsx (formato moderno) e xlrd per i file .xls meno recenti. Installi con pip install openpyxl. Pandas seleziona automaticamente il motore in base all'estensione del file. Per la scrittura, utilizzi xlsxwriter per la formattazione avanzata. Se il motore non è installato, read_excel() genera un ModuleNotFoundError.

# Install the required engine:
# pip install openpyxl          # for .xlsx (modern)
# pip install xlrd==1.2.0       # for .xls (legacy)

import pandas as pd
df = pd.read_excel('report.xlsx', engine='openpyxl')

Selezionare un foglio con sheet_name

Le cartelle di lavoro Excel possono contenere più fogli. sheet_name= specifica quale leggere: passi una stringa (il nome del foglio), un intero (la posizione indicizzata da 0) oppure un elenco per leggere più fogli in un dizionario. Passi sheet_name=None per leggere tutti i fogli in un dizionario indicizzato per nome del foglio. Esaminare i fogli disponibili con pd.ExcelFile('file.xlsx').sheet_names è un buon punto di partenza.

import pandas as pd

# Read the second sheet
df = pd.read_excel('workbook.xlsx', sheet_name=1)

# Read by name
df = pd.read_excel('workbook.xlsx', sheet_name='Sales')

# Inspect available sheets
xl = pd.ExcelFile('workbook.xlsx')
print(xl.sheet_names)  # ['Summary', 'Sales', 'Costs']

Parametri Excel comuni

pd.read_excel() supporta la maggior parte degli stessi parametri di read_csv(): header=, index_col=, usecols=, skiprows=, dtype= e nrows=. Per Excel, usecols accetta anche una stringa che rappresenta un intervallo di colonne Excel, come 'A:C' o 'A,C,E'. È utile quando le lettere delle colonne sono note in base alla struttura del foglio di calcolo.

import pandas as pd

df = pd.read_excel(
    'sales_report.xlsx',
    sheet_name='Q1',
    header=2,          # header is on row 3 (0-indexed)
    usecols='A:D',     # Excel column range
    skiprows=[3, 4],   # skip rows 4 and 5
    nrows=100
)

Leggere JSON: formati orient

pd.read_json() legge JSON in un DataFrame. Il parametro orient= specifica la struttura JSON: 'records' (un elenco di dizionari riga), 'columns' (un dizionario di array di colonne, il valore predefinito), 'index' (un dizionario di dizionari riga indicizzati) oppure 'values' (un array grezzo). La maggior parte delle API REST restituisce il formato 'records': esamini sempre prima il JSON grezzo per determinare l'orient corretto.

import pandas as pd

# REST API response: list of records
json_str = '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]'
df = pd.read_json(json_str, orient='records')
print(df)

Leggere JSON da un file o da un URL

pd.read_json() accetta un percorso di file, un URL o direttamente una stringa JSON. Per JSON profondamente nidificati (ad esempio, risposte API con oggetti nidificati), utilizzi invece json_normalize() del modulo pandas.io.json, che appiattisce i dizionari nidificati in colonne con nomi separati da punti.

import pandas as pd
from pandas.io.json import json_normalize

# From a file
df = pd.read_json('events.json')

# Flatten nested JSON
nested = [{'id': 1, 'user': {'name': 'A', 'age': 30}},
          {'id': 2, 'user': {'name': 'B', 'age': 25}}]
df_flat = json_normalize(nested)
print(df_flat.columns.tolist())  # ['id', 'user.name', 'user.age']

Formato JSON Lines

JSON Lines (NDJSON) memorizza un oggetto JSON per riga, rendendo semplice lo streaming di grandi dataset. Utilizzi pd.read_json('file.jsonl', lines=True) per analizzare questo formato. È comune nei file di log, nelle esportazioni Kafka e nei formati dei dataset di machine learning. Ogni riga deve essere un oggetto JSON valido; le righe non valide causano il fallimento della lettura.

import pandas as pd

# file.jsonl contains one JSON record per line:
# {"id": 1, "event": "click"}
# {"id": 2, "event": "view"}
df = pd.read_json('events.jsonl', lines=True)
print(df)

Gestire l'analisi delle date in JSON

JSON non dispone di un tipo nativo per le date: le date vengono memorizzate come stringhe o timestamp Unix (millisecondi o secondi dall'epoch). Imposti convert_dates=True (valore predefinito) per consentire a Pandas di tentare la conversione automatica delle colonne i cui nomi contengono 'date', 'time' o 'at'. Per nomi di colonne o timestamp personalizzati, esegua la conversione esplicitamente con pd.to_datetime(df['col'], unit='ms').

import pandas as pd

# Unix milliseconds timestamp column
df = pd.read_json('events.json', orient='records')
df['created_at'] = pd.to_datetime(df['created_at'], unit='ms')
print(df['created_at'].dtype)  # datetime64[ns]

Confrontare i problemi comuni di Excel e JSON

Problemi comuni di Excel: le celle unite producono righe NaN, le righe e colonne nascoste vengono incluse nell'output e la formattazione dei numeri (ad esempio, date memorizzate come float) deve essere corretta dopo il caricamento. Problemi comuni di JSON: la presenza incoerente dei campi tra i record produce NaN e le chiavi intere in un oggetto JSON diventano nomi di colonne stringa.

import pandas as pd

# Excel date stored as float (Excel serial date)
df = pd.read_excel('old_report.xls')
# If dates appear as floats (e.g., 44927.0), convert:
# from xlrd import xldate_as_datetime
# df['date'] = df['date'].apply(lambda x: xldate_as_datetime(x, 0))

pd.ExcelFile per più fogli

Quando deve leggere in modo efficiente più fogli dello stesso file, apra un context manager pd.ExcelFile e chiami parse(sheet_name) per ogni foglio. In questo modo evita di riaprire e rianalizzare il file per ogni foglio, un aspetto importante per le cartelle di lavoro di grandi dimensioni. Il context manager chiude automaticamente il file.

import pandas as pd

with pd.ExcelFile('annual_report.xlsx') as xf:
    df_q1 = xf.parse('Q1')
    df_q2 = xf.parse('Q2')

print(df_q1.shape, df_q2.shape)

Utilizzare requests per caricare API JSON

Per i dati provenienti da API REST, utilizzi la libreria requests per recuperare il JSON e passi l'oggetto Python analizzato a pd.DataFrame() o pd.json_normalize(). Questo schema separa la gestione HTTP dall'analisi dei dati e Le consente di gestire intestazioni, autenticazione e paginazione prima che Pandas elabori i dati.

import pandas as pd
import requests

response = requests.get('https://api.example.com/records')
data = response.json()   # Python list of dicts
df = pd.DataFrame(data)
print(df.head())

Verifica rapida

Verifichi la Sua comprensione della lettura dei file Excel e JSON con Pandas in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che: pd.read_excel() legge i file xlsx e consente di specificare il foglio da caricare tramite sheet_name, pd.read_json() gestisce più strutture JSON controllate dal parametro orient e json_normalize() appiattisce gli oggetti JSON nidificati in un DataFrame piatto. Ora passeremo all'esportazione dei DataFrame in file CSV ed Excel per la condivisione e l'elaborazione successiva.

Domande Frequenti

La lezione «Lettura di file Excel e JSON» è gratuita?

Sì — il testo completo di «Lettura di file Excel e JSON» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Pandas & NumPy Academy, passa a CoddyKit PRO. Il corso Pandas & NumPy Academy include 4 lezioni in totale.

Cosa imparerò in «Lettura di file Excel e JSON»?

Importi cartelle di lavoro Excel con pd.read_excel e record JSON con pd.read_json, gestendo le varianti di formato più comuni. Eserciti Pandas & NumPy Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Pandas & NumPy Academy?

Non è richiesta alcuna esperienza precedente. Pandas & NumPy Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Lettura di file Excel e JSON»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Pandas & NumPy Academy?

Sì. Ogni lezione Pandas & NumPy Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Lettura di file CSV
  2. Lettura di file Excel e JSON
  3. Scrittura dei DataFrame su file
  4. Lettura da URL e StringIO
← Torna a Pandas & NumPy Academy