Panda's: hoe tijdreeksen opnieuw te samplen met groupby()
Het opnieuw bemonsteren van tijdreeksgegevens betekent dat de gegevens over een nieuwe periode worden samengevoegd.
Als u een tijdreeks in panda’s opnieuw wilt samplen met behulp van de groupby- operator, kunt u de volgende basissyntaxis gebruiken:
group = df. groupby ([pd. Group (freq=' W '), ' store ']) result = group[' sales ']. sum (). unstack (' store '). fillna (0)
Dit specifieke voorbeeld groepeert de rijen van het DataFrame op winkelkolom , herbemonstert vervolgens de tijdreeks per week ( freq=’W‘ ) en berekent vervolgens de som van de waarden in de verkoopkolom .
Houd er rekening mee dat we tijdreeksgegevens kunnen herbemonsteren naar verschillende tijdsperioden, waaronder:
- S : Seconden
- min : minuten
- H : Uren
- J :Dag
- W : Week
- M : Maand
- Vraag : Kwartaal
- EEN : Jaar
In het volgende voorbeeld ziet u hoe u in de praktijk tijdreeksgegevens opnieuw bemonstert met een groupby- bewerking.
Voorbeeld: Resample een tijdreeks met groupby in Pandas
Stel dat we het volgende panda’s DataFrame hebben dat de totale omzet per dag in twee verschillende winkels weergeeft:
import pandas as pd #createDataFrame df = pd. DataFrame ({' sales ': [13, 14, 17, 17, 16, 22, 28, 10, 17, 10, 11], ' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B']} , index=pd. date_range ('2023-01-06', '2023-01-16', freq='d')) #view DataFrame print (df) sales store 2023-01-06 13 A 2023-01-07 14 A 2023-01-08 17 A 2023-01-09 17 A 2023-01-10 16A 2023-01-11 22 B 2023-01-12 28 B 2023-01-13 10 B 2023-01-14 17 B 2023-01-15 10 B 2023-01-16 11 B
Laten we zeggen dat we de rijen per winkel willen groeperen, vervolgens de tijdreeksen per week opnieuw willen bemonsteren en vervolgens de som van de waarden in de verkoopkolom willen berekenen.
We kunnen hiervoor de volgende syntaxis gebruiken:
#group by store and resample time series by week group = df. groupby ([pd. Group (freq=' W '), ' store ']) #calculate sum of sales each week by store result = group[' sales ']. sum (). unstack (' store '). fillna (0) #view results print (result) store AB 2023-01-08 14.0 0.0 2023-01-15 16.5 17.0 2023-01-22 0.0 11.0
Uit het resultaat kunnen we zien:
- De som van de verkopen voor de week eindigend op 01/08/2023 in winkel A is 14 .
- De som van de verkopen voor de week eindigend op 01/08/2023 in winkel B is 0 .
Enzovoort.
Merk op dat we er in dit voorbeeld voor hebben gekozen om de som van de waarden in de verkoopkolom te berekenen.
We kunnen echter ook andere statistieken kiezen, zoals aantal, gemiddelde, mediaan, min, max, enz.
Vervang eenvoudigweg sum() in de bovenstaande code door count() , Mean() , Median() , etc. om de metriek van uw keuze te berekenen.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in Python uitvoert:
Hoe een tijdreeks in Matplotlib te plotten
Hoe een tijdreeks in Seaborn te plotten
Hoe MAPE te berekenen uit tijdreeksen in Python