Come raggruppare per settimana in pandas dataframe (con esempio)


È possibile utilizzare la seguente sintassi di base per raggruppare le righe per settimana in un DataFrame panda:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' values ']. sum ()

Questa particolare formula raggruppa le righe per settimana nella colonna della data e calcola la somma dei valori per la colonna dei valori nel DataFrame.

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: come raggruppare per settimana su Pandas

Diciamo che abbiamo il seguente DataFrame panda che mostra le vendite effettuate da un’azienda in date diverse:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' date ': pd. date_range (start='1/5/2022', freq='D', periods=15),
                   ' sales ': [6, 8, 9, 5, 4, 8, 8, 3, 5, 9, 8, 3, 4, 7, 7]})

#view DataFrame
print (df)

         dirty date
0 2022-01-05 6
1 2022-01-06 8
2 2022-01-07 9
3 2022-01-08 5
4 2022-01-09 4
5 2022-01-10 8
6 2022-01-11 8
7 2022-01-12 3
8 2022-01-13 5
9 2022-01-14 9
10 2022-01-15 8
11 2022-01-16 3
12 2022-01-17 4
13 2022-01-18 7
14 2022-01-19 7

Correlato: Come creare un intervallo di date in Pandas

Possiamo utilizzare la seguente sintassi per calcolare la somma delle vendite raggruppate per settimana:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. sum ()

date
2022-01-02 32
2022-01-09 44
2022-01-16 18
Freq: W-SUN, Name: sales, dtype: int64

Ecco come interpretare il risultato:

  • Ci sono state 32 vendite in totale durante la settimana a partire dal giorno successivo al 02/01/2022.
  • Ci sono state 44 vendite in totale durante la settimana a partire dal giorno successivo al 01/09/2022.
  • Durante la settimana a partire dal giorno successivo al 16/01/2022 sono state effettuate complessivamente 18 vendite.

Va notato che per impostazione predefinita, i panda presuppongono che la settimana inizi il giorno dopo la domenica ( W-SUN ).

Tuttavia, secondo la documentazione , è possibile modificare questo valore per Freq .

Ad esempio, è possibile specificare Freq=W-MON se si desidera che ogni settimana inizi il giorno dopo lunedì (ovvero martedì).

Possiamo utilizzare una sintassi simile per calcolare i valori massimi di vendita raggruppati per settimana:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate max of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. max ()

date
2022-01-02 9
2022-01-09 9
2022-01-16 7
Freq: W-SUN, Name: sales, dtype: int64

Ecco come interpretare il risultato:

  • Le vendite massime giornaliere durante la settimana a partire dal giorno successivo al 01/02/2022 sono state 9 .
  • Il numero massimo di vendite giornaliere durante la settimana a partire dal giorno successivo al 09/01/2022 è stato pari a 9 .
  • Il numero massimo di vendite giornaliere durante la settimana a partire dal giorno successivo al 16/01/2022 è stato 7 .

Nota : puoi trovare la documentazione completa dell’operazione groupby in panda qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:

Come raggruppare per mese in Pandas DataFrame
Come raggruppare per giorno in Pandas DataFrame
Come utilizzare Groupby e contare in modo condizionale in Pandas

Aggiungi un commento

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