API · Pandas

Funzione Pandas DataFrame.resample()

DataFrame.resample() raggruppa le osservazioni indicizzate temporalmente in intervalli di frequenza, per aggregarle, ad esempio con somme settimanali o mensili.

In questa pagina

In Python Pandas, DataFrame.resample() raggruppa le osservazioni indicizzate temporalmente in intervalli definiti da una frequenza, così da poterle aggregare, per esempio sommando i valori di ogni settimana o mese.

Sintassi di pandas.DataFrame.resample()

Il metodo DataFrame ricampiona le righe in base a un indice di tipo data e ora. In alternativa, è possibile indicare con on una colonna temporale o con level un livello temporale dell’indice. La firma esatta varia a seconda della versione di pandas; la chiamata essenziale è df.resample(rule, ...), dove rule specifica la frequenza desiderata. Poiché qui non è indicata una versione di pandas, omettiamo intenzionalmente i parametri e i valori predefiniti che dipendono dalla versione.

Parametri

Parametro Scopo
rule Regola di frequenza che definisce gli intervalli desiderati.
closed Specifica quale estremo di ciascun intervallo è incluso.
label Specifica quale estremo dell’intervallo viene usato come etichetta del risultato.
on Seleziona una colonna temporale del DataFrame da usare per il raggruppamento al posto dell’indice.
level Seleziona un livello temporale di un MultiIndex da usare per il raggruppamento.
origin e offset Modificano il punto da cui iniziano gli intervalli; i valori accettati e il comportamento dipendono dalla versione di pandas.

Valore restituito

resample() restituisce un oggetto resampler. È possibile concatenare a questo oggetto un’aggregazione, come .sum(), per calcolare un risultato per ogni intervallo. DataFrame.resample() si applica a un DataFrame; gli esempi seguenti usano invece una Series e chiamano quindi Series.resample(). Gli esempi non sono stati eseguiti: il pacchetto non specifica una versione runtime di pandas e non include prove di esecuzione, quindi non viene dichiarato alcun output osservato.

Esempio di ricampionamento settimanale

Questa Series contiene un valore per ogni giorno dal 1° al 30 gennaio 2021. La regola settimanale raggruppa i valori giornalieri in intervalli di una settimana e .sum() somma i valori di ciascun intervallo. Con la regola che termina di domenica mostrata qui, le etichette corrispondono alle domeniche che chiudono gli intervalli. Il primo e l’ultimo intervallo sono parziali: i dati iniziano di venerdì e terminano di sabato.

import pandas as pd

dates = pd.date_range("2021-01-01", periods=30, freq="D")
daily = pd.Series(range(30), index=dates)
weekly_totals = daily.resample("W").sum()
print(weekly_totals)

Il frammento non è stato eseguito: mostra l’operazione su una Series e i dati di input necessari per adattare l’aggregazione.

Esempio di ricampionamento mensile

La stessa Series giornaliera può essere raggruppata nell’intervallo del mese di calendario e sommata. Il codice calcola la somma dei valori forniti dal 1° al 30 gennaio: vanno da 0 a 29 e totalizzano 435. Non è il totale di un mese completo, perché l’input non contiene un dato per il 31 gennaio. MonthEnd() esprime la regola di fine mese senza dipendere da un alias di frequenza la cui disponibilità può variare tra le versioni di pandas.

import pandas as pd

dates = pd.date_range("2021-01-01", periods=30, freq="D")
daily = pd.Series(range(30), index=dates)
monthly_totals = daily.resample(pd.offsets.MonthEnd()).sum()
print(monthly_totals)

Il frammento non è stato eseguito: il risultato è descritto in base ai valori forniti, senza affermare una formattazione specifica che dipenda dalla versione di pandas.