• analiticas
  • Posts
  • Personalizza la forma del tuo dataset con melt()

Personalizza la forma del tuo dataset con melt()

Scopri come trasformare le colonne in righe, per avere un dataframe "lungo"

Il comando melt() in pandas è uno strumento essenziale per chi ha bisogno che i propri dati siano strutturati in un modo specifico. Ad esempio, ciò potrebbe essere necessario per costruire alcuni grafici (dai un’occhiata a quali sono le librerie per costruire grafici con Python).

In questa micro-lezione esamineremo la sintassi e il funzionamento di melt().

Cosa fa melt()?

melt() ci permette di cambiare il formato di un dataframe da “largo” (ovvero con tante colonne) a “lungo” (cioè con poche colonne e molte righe).

Le librerie e il dataframe

Prima di iniziare, importiamo la libreria pandas:

import pandas as pd

Possiamo creare un dataframe che andremo a rimodellare con melt() in seguito:

df = pd.DataFrame({
    'Prodotto': ['A', 'B', 'C'],
    'Gen': [100, 120, 90],
    'Feb': [110, 130, 95],
    'Mar': [105, 125, 100]
})

Ecco l’aspetto del nostro dataframe:

Prodotto

Gen

Feb

Mar

A

100

110

105

B

120

130

125

C

90

95

100

melt() in azione

Adesso applichiamo il comando melt() così:

df_melted = pd.melt(
    df,
    id_vars=['Prodotto'],
    var_name='Mese',
    value_name='Vendite',
    value_vars=['Gen','Feb','Mar']
)

Ecco una breve spiegazione di quello che abbiamo fatto:

  • Con df_melted = abbiamo creato un nuovo dataframe. Esso sarà il risultato del rimodellamento del dataframe iniziale.

  • Con df abbiamo specificato che melt() verrà applicato al dataframe iniziale, chiamato per l’appunto df.

  • Con id_vars=['Prodotto'] abbiamo attribuito alla colonna “Prodotto” il ruolo di colonna chiave del dataframe.

  • Con var_name='Mese' abbiamo creato una nuova colonna, chiamata “Mese”. Questa sarà una colonna del dataframe rimodellato.

  • Con value_name='Vendite' abbiamo creato una colonna che conterrà i valori corrispondenti alle variabili della colonna “Mese”.

  • Con value_vars=['Gen','Feb','Mar'] abbiamo deciso che le colonne “Mese” e “Vendite” saranno popolate dai valori delle colonne “Gen”, “Feb” e “Mar”. Il nome di queste colonne costituirà i valori della colonna “Mese” e i loro valori saranno quelli della colonna “Vendite”.

Il nostro dataframe, una volta trasformato, avrà l’aspetto seguente:

Prodotto

Mese

Vendite

A

Gen

100

B

Gen

120

C

Gen

90

A

Feb

110

B

Feb

130

C

Feb

95

A

Mar

105

B

Mar

125

C

Mar

100

Attenzione!

Quando usiamo value_vars possiamo scegliere di includere solo alcune colonne nel nostro dataframe finale. Se invece vogliamo continuare ad usare tutte le colonne (come nell’esempio qui sopra), possiamo tranquillamente omettere value_vars.

Perché usare melt()

Uno dei benefici dell’utilizzo di melt() è quello di facilitare l'analisi dei dati, rendendo più semplice l'applicazione di funzioni di aggregazione o la creazione di grafici. Ad esempio, il grafico che abbiamo costruito in questa micro-lezione necessitava di un dataframe “lungo”.

Inoltre, il formato lungo è spesso preferito per l'analisi statistica e il machine learning, poiché molti algoritmi richiedono dati in questo formato. Quindi, in alcuni casi, l’utilizzo di melt() sarà una tappa obbligata del nostro lavoro.

Qualche consiglio pratico

Quando usi melt(), considera attentamente quali colonne devono rimanere come identificatori (id_vars) e quali devono essere "sciolte" in variabili.

Inoltre, scegli nomi significativi per le nuove colonne create (con i parametri var_name e value_name) così da non confonderti.

Alla prossima micro-lezione 👋