per creare una Pivot Table da un DataFrame
sintassi
- stesso calcolo per le colonne valori
df.pivot_table(
index=["colonna1","colonna2,.."], colonne in riga
columns=["colonnaX","colonnaY,.."], colonne in colonne (valori in colonna)
values=["colonnaValore1","colonnaValore2,..."], colonne con i valori
aggfunc='tipo calcolo').reset_index() tipo di calcolo da utilizzare (somma, counteggio, ...)
- diverso calcolo per le colonne valori
df.pivot_table(
index=["colonna1","colonna2,.."],
columns=["colonnaX","colonnaY,.."],
values=["colonnaValore1","colonnaValore2,..."],
aggfunc={
'colonnaValore1': 'tipo calcolo',
'colonnaValore2': ['tipo calcolo','tipo calcolo', ...], più tipi di calcolo per la setssa colonna valori
'...': 'tipo calcolo'
}).reset_index()
- più calcoli per le colonne valori
df.pivot_table(
index=["colonna1","colonna2,.."],
columns=["colonnaX","colonnaY,.."],
values=["colonna valori"],
aggfunc=['tipo calcolo 1','tipo calcolo 2']).reset_index()
per aggiungere il totale occorre inserire questi parametri
margins=True, margins_name='Total'
é possibile sostituire il valore NaN (non trovato) con un di defaul
fill_value=valore_default
esempio: sostutisco con 0 i non trovati
fill_value=0
tipo di calcolo
- sum somma
- count conta
- mean media
esempio: solo righe
Dataframe
Pivot table
- semplice
pivot = df.pivot_table(
index=["Prodotto","Città"],
values=["Fatturato","Utile"],
aggfunc='sum').reset_index()
- diversi calcoli per colonna
pivot = df.pivot_table(
index=['Prodotto'],
values=['Fatturato','Utile'],
aggfunc={'Fatturato':'sum','Utile':'mean'}).reset_index()
esempio: righe e colonne valori + correzione errore
Dataframe
Pivot table
- con colonne valori senza correzione errore
pivot = df.pivot_table(
index=["Città","Prodotto"],
columns=["Tipo"],
values=["Valore"],
aggfunc='sum').reset_index()
- con colonne valori cone correzione errore
pivot = df.pivot_table(
index=["Città","Prodotto"],
columns=["Tipo"],
values=["Valore"],
aggfunc='sum',
fill_value=0).reset_index()