- 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()
.
Il programma della micro-lezione
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 chemelt()
verrà applicato al dataframe iniziale, chiamato per l’appuntodf
.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 👋