Se in un dataframe abbiamo diverse righe con una colonna che ha valori uguali per più righe, allora è utilizzabile come identificatore per poter raggruppare i valori secondo diverse metodologie.
Abbiamo per esempio un order book in cui vengono segnati i trade eseguiti sul mercato azionario.
import pandas as pd d = {'Ticker':['AAPL','GOOG','AAPL','TSLA'], 'Gain':[200,345,120,70] } df = pd.DataFrame(d)
Ticker | Gain | |
---|---|---|
0 | AAPL | 200 |
1 | GOOG | 345 |
2 | AAPL | 120 |
3 | TSLA | 70 |
Vogliamo sapere quanto è il guadagno medio per ogni Azienda.
Il ticker è un valore univoco per ogni Stock, quindi possiamo utilizzare quello.
gain_group = df.groupby('Ticker') gain_group.mean()
Ticker | Gain |
---|---|
AAPL | 160.0 |
GOOG | 345.0 |
TSLA | 70.0 |
con df.groupby('Ticker')
gli indico la colonna da utilizzare per il gruppo.
Gain_group
è ora un oggetto che ha diversi metodi, fra cui mean()
che mi restituisce la media dei valori per singola colonna.
Un altra sintassi che ci permette di fare tutto in un unica riga creando un output su colonne specifico è
df.groupby('Ticker')['Gain'].agg(['sum', 'count'])
Ticker | sum | count |
---|---|---|
AAPL | 320 | 2 |
GOOG | 345 | 1 |
TSLA | 70 | 1 |
Dove diciamo “Hey Pandas, raggruppami le righe dalla colonna Ticker, di questi prendi i valori della colonna Gain e creami due colonne dove in una mi metti la somme e nell’altra mi metti il numero di righe totali per tale ticker”.
Se invece vogliamo avere un report di molti aspetti statistici tutti in un colpo solo senza doverli richiedere, allora usiamo
df.groupby('Ticker').describe()
Gain | ||||||||
---|---|---|---|---|---|---|---|---|
count | mean | std | min | 25% | 50% | 75% | max | |
Ticker | ||||||||
AAPL | 2.0 | 160.0 | 56.568542 | 120.0 | 140.0 | 160.0 | 180.0 | 200.0 |
GOOG | 1.0 | 345.0 | NaN | 345.0 | 345.0 | 345.0 | 345.0 | 345.0 |
TSLA | 1.0 | 70.0 | NaN | 70.0 | 70.0 | 70.0 | 70.0 | 70.0 |
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!