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)
TickerGain
0AAPL200
1GOOG345
2AAPL120
3TSLA70

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()
TickerGain
AAPL160.0
GOOG345.0
TSLA70.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'])
Tickersumcount
AAPL3202
GOOG3451
TSLA701

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
countmeanstdmin25%50%75%max
Ticker
AAPL2.0160.056.568542120.0140.0160.0180.0200.0
GOOG1.0345.0NaN345.0345.0345.0345.0345.0
TSLA1.070.0NaN70.070.070.070.070.0
0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Sentitevi liberi di contribuire!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *