Gegevens groeperen op tijd in panda's (met voorbeeld)
U kunt de volgende syntaxis gebruiken om gegevens op tijd te groeperen en aggregatie in panda’s uit te voeren:
df. groupby ([df[' time ']. dt . hour ]). dirty . sum ()
In dit specifieke voorbeeld worden de waarden per uur gegroepeerd in een kolom met de naam Uur en wordt vervolgens voor elk uur de som van de waarden in de kolom Verkoop berekend.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: groepeer gegevens op tijd in Pandas
Laten we zeggen dat we het volgende panda’s DataFrame hebben dat het aantal verkopen op verschillende tijdstippen van de dag voor een winkel weergeeft:
import pandas as pd #createDataFrame df = pd. DataFrame ({' time ': ['2022-01-01 01:14:00', '2022-01-01 01:24:15', '2022-01-01 02:52:19', '2022-01-01 02:54:00', '2022-01-01 04:05:10', '2022-01-01 05:35:09'], ' sales ': [18, 20, 15, 14, 10, 9]}) #convert date column to datetime df[' time '] = pd. to_datetime (df[' time ']) #view DataFrame print (df) time sales 0 2022-01-01 01:14:00 18 1 2022-01-01 01:24:15 20 2 2022-01-01 02:52:19 15 3 2022-01-01 02:54:00 14 4 2022-01-01 04:05:10 10 5 2022-01-01 05:35:09 9
We kunnen de volgende syntaxis gebruiken om de tijdkolom op uren te groeperen en de som van de verkopen voor elk uur te berekenen:
#group by hours in time column and calculate sum of sales
df. groupby ([df[' time ']. dt . hour ]). dirty . sum ()
time
1 38
2 29
4 10
5 9
Name: sales, dtype: int64
Uit het resultaat kunnen we zien:
- In totaal werden er in het eerste uur 38 verkopen gedaan.
- In het tweede uur werden in totaal 29 verkopen gedaan.
- In het vierde uur werden in totaal 10 verkopen gedaan.
- In totaal werden er tijdens het vijfde uur 9 verkopen gedaan.
Merk op dat we ook een andere aggregatie kunnen uitvoeren.
We kunnen bijvoorbeeld het gemiddelde aantal verkopen per uur berekenen:
#group by hours in time column and calculate mean of sales
df. groupby ([df[' time ']. dt . hour ]). dirty . mean ()
time
1 19.0
2 14.5
4 10.0
5 9.0
Name: sales, dtype: float64
Als we willen, kunnen we ook groeperen op uren en minuten.
De volgende code laat bijvoorbeeld zien hoe u de som van de verkopen berekent, gegroepeerd op uren en minuten:
#group by hours and minutes in time column and calculate mean of sales
df. groupby ([df[' time ']. dt . hour , df[' time ']. dt . minute ]). dirty . mean ()
time time
1 14 18
24 20
2 52 15
54 14
4 5 10
5 35 9
Name: sales, dtype: int64
Uit het resultaat kunnen we zien:
- Het gemiddelde aantal verkopen over 1 uur en 14 minuten was 18 .
- Het gemiddelde aantal verkopen gedurende 1 uur en 23 minuten was 20 .
- Het gemiddelde aantal verkopen over 2 uur en 52 minuten was 15 .
Enzovoort.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in panda’s kunt uitvoeren:
Hoe u een datumbereik in Pandas maakt
Hoe maand uit datum te extraheren in Panda’s
Hoe tijdstempel naar datum/tijd in Panda’s te converteren