una volta settato un Dataframe é possibile fare dei gruppi per poi applicarci dei metodi
si usa .groupby
il metodo raggruppa il dataframe in base alla colonna indicata
simile a quello che fa una Pivot Table
si pososnk creare 2 diversi tipi di oggetti a seconda dell'utilizzo
- liste Series
- semplice
una sola colonna da ragguppare e tutte le altre colonne numeriche da sommare e testo da unire
df.groupby(by="colonna").sum() raggruppa per la colonna indicata e somma tutte le colonne numeriche
- con più colonne
inidcando le colonne da ragguppare e quelle da sommare
df.groupby(by=["colonna1,colonna1"])["colonna somma"].sum() raggruppa per le colonna indicate + somma la colonna da sommare
df.groupby(by=["colonna1,colonna1"]).colonnasomma.sum() se la colonna somma ha il nome senza spazi
df.groupby(by=["colonna1,colonna1"])[["colonna1 somma","colonna2 somma"]].sum() raggruppa per le colonna indicate + somma le colonne da sommare
- date divise per frequenza
colonna Data da usare per raggrppare indicando la frequenza
df.groupby(pd.Grouper(key="colonna data",freq="frequenza")).sum() suddivisione anche per anni, mesi ... della data
frequenza
- Y anno
- M mese
- W settimanale
- Dataframe
(vedi Python - Dataframe - gruppo - pivot table - subtotal)
df.groupby("colonna agregazione", as_index=False)
.agg({"colonna valore":"tipo di calcolo"})
.assign(**{"nome colonna aggiunta": "valore colonna aggiunta"}) colonna da aggiungere manualmente
esempio:
df.groupby("Prodotto", as_index=False).agg({"Fatturato":"sum"}).assign(**{"Città": "Subtotal"})
esempio: creo lista di un Dataframe 10 righe con date, prodotti e numeri
- raggruppo semplice per Data
non del tutto corretto perché unisce i prodotti con stessa data
df.groupby(by=["Data"]).sum()
- raggruppo indicando le colonne
df.groupby(by=["Data","Prodotto"])[["Fatturato","Utile"]].sum()
- raggurppo per Data con frequenza mensile M
df.groupby(pd.Grouper(key="Data",freq="M"))[["Fatturato","Utile"]].sum()