Ispezione di base dei DataFrame
Usi head(), tail(), info(), describe() e shape per comprendere rapidamente il contenuto e la struttura di qualsiasi DataFrame.
Ispezione di base dei DataFrame è una lezione Pandas & NumPy Academy gratuita su CoddyKit. Questa è la lezione 4 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.
I primi cinque passaggi con qualsiasi DataFrame
Ogni volta che carica un nuovo dataset, una sequenza sistematica di controlli può far risparmiare ore di debugging. Gli strumenti Pandas per questo scopo includono: head() per visualizzare le prime righe, tail() per le ultime, info() per i tipi delle colonne e i valori nulli, describe() per le statistiche e shape per le dimensioni. Eseguire questi cinque controlli richiede meno di un minuto e rivela immediatamente la maggior parte dei problemi di qualità dei dati.
import pandas as pd
# Assume df is loaded from a CSV
print(df.shape) # (rows, cols)
df.head() # first 5 rows
df.info() # dtypes + non-null counts
df.describe() # statisticshead() e tail()
df.head(n) restituisce le prime n righe (5 per impostazione predefinita) come DataFrame. df.tail(n) restituisce le ultime n righe. Insieme, aiutano a verificare che i dati siano stati analizzati correttamente: controlli che i nomi delle colonne si trovino nella riga d'intestazione, che le colonne numeriche contengano numeri e che le stringhe di date non siano state interpretate erroneamente. Sono operazioni non distruttive e restituiscono nuovi DataFrame.
import pandas as pd
df = pd.DataFrame({'a': range(20), 'b': range(20, 40)})
print(df.head(3))
# a b
# 0 0 20
# 1 1 21
# 2 2 22
print(df.tail(2))
# a b
# 18 18 38
# 19 19 39info(): tipi e conteggi dei valori non nulli
df.info() stampa un riepilogo conciso: il dtype dell'indice, il numero di valori non nulli per colonna, il dtype di ogni colonna e l'utilizzo totale della memoria. Le colonne con meno valori non nulli rispetto al numero totale di righe contengono dati mancanti. Il dtype object indica spesso una colonna di stringhe (o una colonna con tipi misti) che potrebbe richiedere una pulizia prima dell'analisi.
import pandas as pd
import numpy as np
df = pd.DataFrame({'name': ['A', 'B', None],
'score': [80.0, np.nan, 90.0],
'grade': ['A', 'C', 'A']})
df.info()
# Column Non-Null Count Dtype
# name 2 non-null object
# score 2 non-null float64
# grade 3 non-null objectdescribe(): riepilogo statistico
df.describe() calcola count, mean, std, min, 25th, 50th (mediana), 75th percentile e max per tutte le colonne numeriche. Passi include='all' per riepilogare anche le colonne object (stringhe). Passi include='object' per riepilogare solo le colonne categoriche. L'output è a sua volta un DataFrame, quindi può salvarlo o applicarvi uno stile per un report.
import pandas as pd
df = pd.DataFrame({'age': [25, 30, 35, 40], 'score': [88, 72, 91, 65]})
print(df.describe().round(1))
# age score
# count 4.0 4.0
# mean 32.5 79.0
# std 6.5 12.0shape, ndim e size
df.shape è una tupla (nrows, ncols). df.ndim restituisce sempre 2 per i DataFrame. df.size è il numero totale di celle. Usi len(df) per ottenere il numero di righe (uguale a df.shape[0]). Questi sono i controlli di coerenza più semplici: confermi il numero di righe previsto dopo il caricamento e dopo ogni passaggio di filtraggio.
import pandas as pd
df = pd.DataFrame({'x': range(100), 'y': range(100), 'z': range(100)})
print(df.shape) # (100, 3)
print(len(df)) # 100
print(df.size) # 300
print(df.ndim) # 2dtypes e select_dtypes()
df.dtypes restituisce una Series che associa ogni nome di colonna al relativo dtype. df.select_dtypes(include='number') restituisce un nuovo DataFrame contenente solo le colonne numeriche: è utile per calcolare correlazioni o applicare trasformazioni numeriche senza operare accidentalmente sulle colonne di stringhe. Passi exclude='object' per escludere le colonne testuali.
import pandas as pd
df = pd.DataFrame({'a': [1,2], 'b': [1.0,2.0], 'c': ['x','y']})
print(df.dtypes)
# a int64
# b float64
# c object
numeric = df.select_dtypes(include='number')
print(numeric.columns.tolist()) # ['a', 'b']isnull() e conteggi dei valori nulli
df.isnull().sum() fornisce il conteggio dei valori mancanti per colonna: è il modo più rapido per individuare le colonne che richiedono una pulizia. Divida per len(df) per ottenere la proporzione di valori mancanti. Una colonna con oltre il 50% di valori mancanti spesso richiede un trattamento specifico: eliminarla oppure applicare un'imputazione specifica del dominio.
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1, np.nan, 3], 'b': [np.nan, np.nan, 6]})
print(df.isnull().sum())
# a 1
# b 2
print((df.isnull().sum() / len(df)).round(2))
# a 0.33
# b 0.67value_counts() su una colonna del DataFrame
La chiamata a df['col'].value_counts() elenca la frequenza di ogni valore univoco della colonna, ordinata per conteggio. Aggiunga normalize=True per ottenere le percentuali. Usi dropna=False per conteggiare anche NaN come categoria. È il modo più rapido per verificare lo sbilanciamento delle categorie o la presenza di valori imprevisti in una colonna categorica.
import pandas as pd
df = pd.DataFrame({'status': ['active','inactive','active','active','banned']})
print(df['status'].value_counts())
# active 3
# inactive 1
# banned 1
print(df['status'].value_counts(normalize=True).round(2))Ispezionare columns e index
df.columns.tolist() restituisce una semplice lista Python dei nomi delle colonne, utile per la manipolazione a livello programmatico o per la registrazione nei log. df.index mostra le etichette delle righe e il relativo tipo. Controlli df.index.is_unique per verificare che non esistano etichette di riga duplicate, una condizione preliminare per molte operazioni di merge e per i calcoli sulle serie temporali.
import pandas as pd
df = pd.DataFrame({'a': [1,2,3]}, index=['x', 'y', 'z'])
print(df.columns.tolist()) # ['a']
print(df.index.tolist()) # ['x', 'y', 'z']
print(df.index.is_unique) # Truesample() per un'ispezione casuale
df.sample(n) restituisce n righe selezionate casualmente senza reinserimento. df.sample(frac=0.1) restituisce il 10% delle righe. Imposti random_state= per rendere i risultati riproducibili. Il campionamento casuale è migliore di head() per individuare problemi nel mezzo di un dataset di grandi dimensioni che potrebbero non comparire nelle prime righe.
import pandas as pd
df = pd.DataFrame({'x': range(1000), 'y': range(1000)})
print(df.sample(3, random_state=42))
print(df.sample(frac=0.005, random_state=0)) # 0.5% of rowsmemory_usage() per stimare l'utilizzo della memoria
df.memory_usage(deep=True) restituisce la memoria utilizzata da ogni colonna in byte. deep=True forza una misurazione accurata delle colonne con dtype object, le cui stringhe si trovano al di fuori del buffer del DataFrame. Sommi i valori per ottenere la memoria totale. Usi questo controllo prima e dopo la riduzione dei dtype per confermare di aver ridotto il consumo di memoria.
import pandas as pd
df = pd.DataFrame({'a': range(10000), 'b': [str(i) for i in range(10000)]})
usage = df.memory_usage(deep=True)
print(usage)
print('Total bytes:', usage.sum())Verifica rapida
Verifichi la sua comprensione dell'ispezione di base dei DataFrame trattata in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato che: head() e tail() consentono di ispezionare visivamente l'inizio e la fine di un DataFrame, info() mostra i dtype e i conteggi dei valori mancanti in una sola chiamata e describe() fornisce riepiloghi statistici per le colonne numeriche. Ora caricheremo i dati dai formati di file più comuni — CSV, Excel e JSON — nei DataFrame.
Domande Frequenti
La lezione «Ispezione di base dei DataFrame» è gratuita?
Sì — il testo completo di «Ispezione di base dei DataFrame» è 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 «Ispezione di base dei DataFrame»?
Usi head(), tail(), info(), describe() e shape per comprendere rapidamente il contenuto e la struttura di qualsiasi DataFrame. 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 4 di 4.
Quanto tempo richiede la lezione «Ispezione di base dei DataFrame»?
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
- Creazione di DataFrame
- Selezione di colonne e righe
- Aggiunta ed eliminazione di colonne
- Ispezione di base dei DataFrame