Vai al contenuto principale

Le 30 migliori domande e risposte su Pandas nei colloqui

Esplora le principali domande e risposte su Pandas per ruoli di data science.
Srujana Maddula
Srujana Maddula

Crea il tuo account gratuito

Pratica and corso your progress.

Continua con GoogleContinuando, accetti la nostra Termini di utilizzo, i nostri Informativa sulla privacy e il fatto che i tuoi dati sono archiviati negli USA.

In questo articolo ho raccolto le domande su Pandas più frequentemente poste ai colloqui, insieme alle relative risposte. Alcune domande provengono dalla mia esperienza di colloquio in Target per un ruolo da data scientist. Iniziamo!

Domande di base su Pandas

Vediamo alcune domande di base su pandas che possono uscire a un colloquio. Gli intervistatori più gentili potrebbero partire da queste per metterti a tuo agio, mentre altri potrebbero usarle per valutare la tua comprensione fondamentale della libreria.

1. Che cos’è pandas in Python?

pandas è una libreria Python open-source con metodi potenti e integrati per pulire, analizzare e manipolare dataset in modo efficiente. Sviluppato da Wes McKinney nel 2008, questo potente pacchetto si integra facilmente con vari altri moduli di data science in Python.

Sebbene originariamente costruito sopra NumPy, il pandas moderno (v2.0+) supporta anche il backend PyArrow. Questo consente operazioni significativamente più veloci, veri tipi di stringa e una gestione migliore dei valori mancanti (tipi nullable) rispetto all’architettura legacy basata solo su NumPy.

2. Come accedi rapidamente alle prime 5 righe e alle ultime 5 righe di un DataFrame pandas?

Il metodo head() in pandas serve per accedere alle prime 5 righe di un DataFrame, mentre il metodo tail() serve per accedere alle ultime 5 righe.

  • Per accedere alle prime 5 righe: dataframe_name.head()

  • Per accedere alle ultime 5 righe: dataframe_name.tail()

3. Perché DataFrame.shape non ha le parentesi?

In pandas, shape è un attributo e non un metodo. Quindi va accessuto senza parentesi.

DataFrame.shape restituisce una tupla con il numero di righe e colonne di un DataFrame.

4. Qual è la differenza tra una Series e un DataFrame?

  • DataFrame: Il DataFrame di pandas è in formato tabellare con più righe e colonne, dove ogni colonna può avere tipi di dato diversi.

  • Series: La Series è un array monodimensionale etichettato che può memorizzare qualsiasi tipo di dato, ma tutti i suoi valori devono essere dello stesso tipo. La struttura Series è più simile a una singola colonna di un DataFrame.

La struttura Series consuma meno memoria di un DataFrame. Quindi, alcune attività di manipolazione dei dati sono più veloci su di essa.

Tuttavia, un DataFrame può memorizzare dataset grandi e complessi, mentre una Series può gestire solo dati omogenei. Di conseguenza, l’insieme di operazioni possibili su un DataFrame è significativamente più ampio rispetto a una Series.

5. Che cos’è un indice in pandas?

L’indice è una serie di etichette che identifica in modo univoco ogni riga di un DataFrame. L’indice può essere di qualsiasi tipo di dato (come intero, stringa, hash, ecc.).

df.index stampa gli indici di riga correnti del DataFrame df.

Domande intermedie su Pandas

Queste domande sono un po’ più impegnative e è più probabile incontrarle in ruoli che richiedono esperienza pregressa con pandas.

6. Che cos’è il multi-indexing in pandas?

L’indice in pandas identifica in modo univoco ogni riga di un DataFrame. Di solito scegliamo la colonna che può identificare in modo univoco ogni riga e la impostiamo come indice. Ma se non hai una singola colonna che può farlo?

Per esempio, in un DataFrame hai le colonne “name”, “age”, “address” e “marks”. Ognuna di queste potrebbe non avere valori univoci per tutte le righe e quindi non è adatta come indice.

Tuttavia, le colonne “name” e “address” insieme possono identificare in modo univoco ogni riga del DataFrame. Quindi puoi impostare entrambe le colonne come indice. Il tuo DataFrame ha ora un multi-index o indice gerarchico.

7. Spiega il reindexing in pandas. Fai un esempio.

Il reindexing serve a conformare un DataFrame a un nuovo indice. Si usa più spesso per colmare lacune nei dati di serie temporali o per assicurare che un report includa tutte le categorie, anche quelle con valori pari a zero.

Se il nuovo indice contiene etichette non presenti nel DataFrame originale, pandas introduce NaN (o un valore di riempimento specificato) per quelle righe.

Esempio: Immagina di avere dati di vendita per Q1 e Q3, ma mancano Q2 e Q4 perché le vendite erano pari a zero. Un grafico standard risulterebbe fuorviante. reindex() risolve forzando l’inserimento dei trimestri mancanti nel DataFrame.

import pandas as pd

# Original data (Note: Q2 and Q4 are missing)
data = {'Quarter': ['Q1', 'Q3'], 'Sales': [15000, 18000]}
df = pd.read_json(pd.DataFrame(data).to_json()) # Simulating loaded data
df = df.set_index('Quarter')

# The complete index we REQUIRE for the report
all_quarters = ['Q1', 'Q2', 'Q3', 'Q4']

# Reindex forces Q2 and Q4 to appear, filling them with 0 instead of NaN
df_full = df.reindex(all_quarters, fill_value=0)

8. Qual è la differenza tra loc e iloc?

Sia i metodi .loc() sia .iloc() in pandas sono usati per selezionare sottoinsiemi di un DataFrame. In pratica, sono ampiamente usati per filtrare un DataFrame in base a condizioni.

Dovremmo usare il metodo .loc() per selezionare i dati usando le etichette effettive di righe e colonne, mentre il metodo .iloc() si usa per estrarre i dati in base agli indici interi di righe e colonne.

9. Mostra due modi diversi per creare un DataFrame pandas

Da un dizionario:

import pandas as pd

data = {'Name': ['John', 'Cataline', 'Matt'],
        'Age': [50, 45, 30],
        'City': ['Austin', 'San Francisco', 'Boston'],
        'Marks' : [70, 80, 95]}

df = pd.DataFrame(data)

Da una lista di liste:

import pandas as pd

data = [['John', 25, 'Austin',70],
        ['Cataline', 30, 'San Francisco',80],
        ['Matt', 35, 'Boston',90]]

columns = ['Name', 'Age', 'City', 'Marks']

df = pd.DataFrame(data, columns=columns)

10. Come ottieni il conteggio di tutti i valori unici di una colonna categorica in un DataFrame?

La funzione Series.value_counts() restituisce il conteggio di ciascun valore unico di una series o colonna.

Esempio:

Abbiamo creato un DataFrame df che contiene una colonna categorica chiamata Sex e abbiamo eseguito la funzione .value_counts() per vedere il conteggio di ciascun valore unico in quella colonna.

import pandas as pd

data = [['John', 50, 'Male', 'Austin', 70],
        ['Cataline', 45 ,'Female', 'San Francisco', 80],
        ['Matt', 30 ,'Male','Boston', 95]]

# Column labels of the DataFrame
columns = ['Name','Age','Sex', 'City', 'Marks']

# Create a DataFrame df
df = pd.DataFrame(data, columns=columns)

df['Sex'].value_counts()

Se vuoi vedere la distribuzione percentuale invece dei conteggi grezzi, usa normalize=True come argomento in .value_counts().

11. Che cos’è il tipo di dato category e perché usarlo?

Il tipo di dato category si usa per colonne con un numero limitato di valori di stringa unici (bassa cardinalità). Fa risparmiare moltissima memoria e velocizza operazioni come ordinamento e raggruppamento, perché Pandas memorizza le stringhe una sola volta in una tabella di lookup e usa interi leggeri per la colonna dati effettiva.

Domande su Pandas per professionisti esperti

Chi ha già una solida esperienza con pandas e si candida a ruoli più senior potrebbe incontrare alcune di queste domande:

12. Come ottimizzi le prestazioni con dataset di grandi dimensioni in pandas?

  • Usa PyArrow: Carica i dati con engine="pyarrow" e dtype_backend="pyarrow". È più veloce e molto più efficiente in memoria rispetto ai tipi standard di NumPy.

  • Vectorization invece di loop: I loop e le iterazioni sono costosi, soprattutto con dataset grandi. Opta per operazioni vettorializzate, applicate all’intera colonna in una volta, più rapide delle iterazioni riga per riga.

  • Carica solo ciò che ti serve: Usa il parametro usecols in read_csv() o read_parquet() per limitare la quantità di dati caricati.

  • Tipi efficienti in memoria: I tipi di dato predefiniti in pandas non sono efficienti in memoria. Per esempio, i valori interi hanno di default il tipo int64, ma se i tuoi valori rientrano in int32, impostare il tipo su int32 può ottimizzare l’uso della memoria. Anche convertire stringhe a bassa cardinalità in tipo category è una buona idea.

  • Usa l’aggregazione dei dati: Prova ad aggregare i dati ed eseguire operazioni statistiche, perché le operazioni su dati aggregati sono più efficienti che sull’intero dataset.

  • Elaborazione parallela: Il pandas nativo è single-threaded. Per il parallelismo su una singola macchina, la soluzione preferita è usare Polars (che è multi-threaded di default) o librerie come Modin che fungono da sostituto parallelo a pandas.

13. Qual è la differenza tra i metodi .join() e .merge() in pandas?

  • Join: Unisce due DataFrame in base al loro indice. Tuttavia, c’è un argomento opzionale on per specificare esplicitamente se vuoi unire in base a colonne. Per impostazione predefinita, esegue una left join. La sintassi è df1.join(df2).

  • Merge: La funzione merge() è più versatile e ti consente di specificare le colonne su cui vuoi unire i DataFrame. Applica una inner join per impostazione predefinita, ma può essere personalizzata per usare diversi tipi di join come left, right, outer, inner e cross. La sintassi è pd.merge(df1, df2, on=”column_names”).

14. Che cos’è Timedelta?

Timedelta rappresenta la durata, cioè la differenza tra due date o orari, misurata in unità come giorni, ore, minuti e secondi.

15. Il metodo .append() è stato rimosso. Come si combinano ora i DataFrame?

Se provi a usare .append() in un ambiente Pandas moderno (versione 2.0 o successiva), verrà generato un errore perché il metodo è stato rimosso per incoraggiare pratiche di codifica più efficienti.

Invece, dovresti raccogliere tutti i tuoi dataframe o righe in una lista e poi chiamare una sola volta pd.concat():

new_df = pd.concat([df1, df2], ignore_index=True)

16. Quando dovresti usare Polars invece di pandas?

Dovresti considerare Polars (una libreria DataFrame basata su Rust) quando:

  • Il dataset è significativamente più grande della RAM disponibile: Polars ha valutazione lazy/streaming.

  • Ti serve performance multi-threaded: le operazioni di pandas sono in gran parte single-threaded.

  • Ogni millisecondo conta: stai costruendo una pipeline dati ad alte prestazioni.

Domande di coding su Pandas

Le abilità pratiche sono importanti quanto la teoria per superare un colloquio tecnico. Ecco quindi alcune domande di coding su pandas che dovresti conoscere prima di affrontare l’intervistatore.

17. Come leggi file Excel e li converti in CSV usando pandas?

Per prima cosa, usiamo la funzione .read_excel() per importare i dati Excel in una variabile. Poi applichiamo semplicemente la funzione .to_csv() per una conversione senza intoppi.

Ecco un esempio di codice:

import pandas as pd

#input your excel file path into the read_excel() function.
excel_data = pd.read_excel("/content/sample_data/california_housing_test.xlsx")

excel_data.to_csv("CSV_data.csv", index = None, header=True) 

Nota: In un colloquio moderno, menziona che preservare i tipi di dato in formato parquet (con .to_parquet() invece di .to_csv()) è spesso preferibile quando si lavora con dataset di grandi dimensioni.

18. Come ordini un DataFrame in base a colonne?

Chiamiamo il metodo .sort_values() per ordinare il DataFrame in base a una singola colonna o a più colonne.

La sintassi è: df.sort_values(by=[“column_names”]), come mostra il seguente esempio:

import pandas as pd

data = [['John', 50, 'Male', 'Austin', 70],
['Cataline', 45 ,'Female', 'San Francisco', 80],
['Matt', 30 ,'Male', 'Boston', 95],
['Oliver',35,'Male', 'New york', 65]]

# Column labels of the DataFrame
columns = ['Name','Age','Sex', 'City', 'Marks']

# Create a DataFrame df
df = pd.DataFrame(data, columns=columns)

# Sort values based on ‘Age’ column
df.sort_values(by=['Age'])

df.head()`

19. Mostra due modi diversi per filtrare i dati

Vediamo come filtrare il seguente DataFrame:

import pandas as pd

data = {'Name': ['John', 'Cataline', 'Matt'],
        'Age': [50, 45, 30],
        'City': ['Austin', 'San Francisco', 'Boston'],
        'Marks' : [70, 80, 95]}

# Create a DataFrame df
df = pd.DataFrame(data)

Metodo 1: Indicizzazione booleana

new_df = df[(df.Name == "John") | (df.Marks > 90)]
print (new_df)

Metodo 2: Uso del metodo .query()

df.query('Name == "John" or Marks > 90')
print (new_df)

20. Come aggreghi i dati (ad es., media o somma)?

La funzione .groupby() ti consente di aggregare i dati in base a determinate colonne ed eseguire operazioni sui gruppi. Combinala con il metodo .agg() per maggiore chiarezza.

Nel codice seguente, i dati sono raggruppati per la colonna Name e viene calcolata la media dei Grades di ciascun gruppo:

import pandas as pd

# Create a DataFrame
data = {
    'Name': ['John', 'Matt', 'John', 'Matt', 'Matt', 'Matt'],
    'Grades': [10, 20, 30, 15, 25, 18]
}

# Create a DataFrame df
df = pd.DataFrame(data)

# mean marks of John and Matt
print(df.groupby('Name').agg(
    avg_grade=('Grades', 'mean'),
)

21. Come puoi creare una nuova colonna derivata da colonne esistenti?

Ci sono due modi per creare nuove colonne a partire da quelle esistenti:

  • Assegnazione diretta: Assegnare una colonna con un nuovo nome a una trasformazione di colonne esistenti: df['Total'] = df['Math'] + df['Science']

  • Method chaining: Usare una funzione lambda con .assign(): df = df.assign(Total=lambda x: x['Math'] + x['Science'])

Oggi si preferisce il method chaining, perché migliora la leggibilità del codice eliminando la necessità di variabili intermedie. Avere l’intera trasformazione dei dati come un’unica pipeline logica riduce significativamente i bug, poiché non rischi più di riferirti accidentalmente a una versione obsoleta o errata del tuo DataFrame durante l’analisi.

Domande su Pandas per Data Scientist

Ora che abbiamo coperto le domande generali e di coding su pandas, diamo un’occhiata alle domande su pandas nei colloqui di data science.

22. Come gestisci i valori null o mancanti in pandas?

Puoi usare uno qualsiasi dei seguenti tre metodi per gestire i valori mancanti in pandas:

  • dropna(): rimuove le righe o le colonne mancanti dal DataFrame.

  • fillna(): riempie i valori mancanti con un valore specifico usando questa funzione.

  • interpolate(): riempie i valori mancanti con valori di interpolazione calcolati.

Con il backend PyArrow, gli interi possono ora memorizzare valori NA senza effettuare il cast a float, il che preserva la fedeltà dei dati nei flussi di lavoro scientifici.

23. Differenza tra i metodi fillna() e interpolate()

  • fillna(): Riempie con un valore statico (ad esempio, 0 o "Unknown"). Il forward filling usando l’argomento method='ffill' all’interno di .fillna() è deprecato; usa invece direttamente .ffill().

  • interpolate(): Riempie usando una stima matematica (lineare, polinomiale, spline) tra punti. È essenziale per dati di serie temporali quando vuoi "unire i puntini".

24. Che cos’è il resampling?

Il resampling si usa per cambiare la frequenza con cui vengono riportati i dati di serie temporali. Immagina di avere dati mensili e volerli convertire in dati settimanali o annuali; è qui che si usa il resampling.

Convertire dati mensili in settimanali o giornalieri è essenzialmente upsampling. Qui si usano tecniche di interpolazione per aumentare le frequenze.

Al contrario, convertire dati mensili in annuali si chiama downsampling, dove si applicano tecniche di aggregazione.

25. Come esegui la one-hot encoding usando pandas?

Eseguiamo la one-hot encoding per convertire valori categorici in numerici, in modo da poterli fornire all’algoritmo di machine learning.

import pandas as pd

data = {'Name': ['John', 'Cateline', 'Matt', 'Oliver'],
        'ID': [1, 22, 23, 36],
        'Category': ['A', 'B', 'A', 'B']}

df = pd.DataFrame(data)

#one hot encoding 
new_df = pd.get_dummies(df, columns=['Category'])
new_df.head()

In produzione, usare il OneHotEncoder di Scikit-learn è l’opzione preferita perché preserva lo schema.

26. Come crei un line plot in pandas?

Per creare un line plot, usiamo la funzione plot in pandas.

import pandas as pd


data = {'units': [1, 2, 3, 4, 5],
        'price': [7, 12, 8, 13, 16]}
# Create a DataFrame df
df = pd.DataFrame(data)

df.plot(kind='line', x='units', y='price')

Nota: Ora puoi cambiare il backend in Plotly per grafici interattivi: pd.options.plotting.backend = "plotly".

27. Qual è il metodo di pandas per ottenere il riepilogo statistico di tutte le colonne di un DataFrame?

df.describe() restituisce statistiche come media, percentili, min, max, ecc., di ciascuna colonna del DataFrame.

28. Che cos’è la media mobile (rolling mean)?

La rolling mean è anche chiamata media mobile, perché l’idea è calcolare la media dei punti dati su una finestra specificata e far scorrere la finestra lungo i dati. Questo riduce le fluttuazioni ed evidenzia le tendenze di lungo periodo nei dati di serie temporali.

La sintassi è: df['column_name'].rolling(window=n).mean()

29. Che cos’è la SettingWithCopyWarning e come la risolvi?

Questo avviso si verificava quando pandas non era sicuro se stessi modificando una vista o una copia. Nel pandas moderno (contesto 3.0+), Copy-on-Write (CoW) è lo standard. CoW separa rigorosamente viste e copie, garantendo che la modifica di un sottoinsieme non alteri mai silenziosamente il frame originale a meno che non sia esplicitamente richiesto. Questo elimina in gran parte l’ambiguità che causava l’avviso.

Per risolverla nelle versioni più vecchie di pandas, usa .loc[] per un indicizzazione esplicita oppure assegna la slice a una nuova variabile prima di apportare modifiche, così da garantire chiarezza ed evitare comportamenti indesiderati. Approfondisci in questo blog: How to Fix SettingWithCopyWarning.

30. Come validi gli schemi dei DataFrame in produzione?

Lo standard di settore è usare pandera, una libreria che applica rigorosi controlli di qualità dei dati a runtime. pandera ti permette di definire uno schema che valida i tipi di dato delle colonne e applica logiche statistiche, come garantire che i valori rientrino in un intervallo specifico o che una colonna sia unica.

Puoi usare i suoi decorator (ad es., @pa.check_types) per validare automaticamente input e output delle tue funzioni, impedendo ai "dati sporchi" di rompere silenziosamente le pipeline a valle. Questo equivale di fatto a fare unit test sui dati stessi.

Prepararsi al colloquio

È probabile che ti vengano poste almeno alcune delle domande più frequenti, motivo per cui conviene usarle per la preparazione. Oltre a pandas, un ruolo orientato ai dati richiede molte altre competenze. Ecco la checklist per avere successo nell’intero processo di colloquio:

Comprendere i requisiti del lavoro

Rivedi la job description e le responsabilità, e assicurati che le tue competenze e il tuo CV siano allineati. Inoltre, conoscere l’azienda e come il tuo ruolo la impatta è un plus.

Coding in Python

L’intervistatore verifica prima le tue competenze in Python prima di chiedere della libreria (pandas). Quindi, attrezzati con solide abilità in Python.

Per i ruoli da analyst, il solo Python può bastare. Ma se ti candidi come data scientist o ML engineer, è importante risolvere esercizi di coding in Python.

Progetti sui dati

Assicurati di avere nel CV alcuni problemi reali sui dati che hai risolto. Per chi ha esperienza, puoi parlare dei progetti passati. Se sei nuovo nel campo, prova a completare alcuni progetti da Kaggle.

Ulteriori concetti

Oltre alle basi, le domande aggiuntive dipenderanno dal ruolo.

Per gli analyst, le domande possono riguardare Excel, dashboard di visualizzazione, statistica e probabilità.

Inoltre, l’intervistatore può approfondire temi di machine learning e deep learning se ti candidi a ruoli da data scientist o ML engineer.

Aspettati domande di system design se ti candidi a ruoli altamente tecnici o con esperienza. Ripassa le domande comuni di design e esercitati con problemi di progettazione di sistemi ML end-to-end.

Conclusione

Per ottenere un lavoro nel settore dei dati servono spesso solide competenze in Pandas. L’elenco sopra, con domande teoriche e pratiche, dovrebbe aiutarti a eccellere nella parte su pandas del colloquio. Inoltre, i suggerimenti finali ti aiuteranno a far filare liscio l’intero colloquio.

Puoi usare le seguenti risorse per prepararti al tuo colloquio su pandas:

  • Data Manipulation with pandas: Un corso per principianti che copre le basi di pandas, la manipolazione dei dati e tecniche di visualizzazione usando dataset reali.
  • Data Preparation with pandas: Questo tutorial offre competenze pratiche nella gestione dei dati mancanti con pandas, insegnando funzioni come isnull(), dropna() e fillna().
  • Practicing Coding Interview Questions in Python: Ideale per prepararsi ai colloqui di coding, questo corso copre strutture dati in Python, manipolazione di stringhe e altre aree chiave per i colloqui di data science.
  • Data Science Interview Preparation: Fornisce consigli completi di preparazione per vari formati di colloquio e copre competenze tecniche in Python, R, SQL e altro.
Srujana Maddula

Autore

Srujana Maddula

Srujana è una tech writer freelance con una laurea quadriennale in Informatica. Scrivere di vari argomenti, tra cui data science, cloud computing, sviluppo, programmazione, sicurezza e molti altri, le viene naturale. Ama la letteratura classica ed esplorare nuove destinazioni.

Argomenti

Correlato