Time series-gegevens opnieuw bemonsteren in python (met voorbeelden)
Het opnieuw bemonsteren van tijdreeksgegevens betekent het samenvatten of aggregeren van de gegevens over een nieuwe periode.
We kunnen de volgende basissyntaxis gebruiken om tijdreeksgegevens in Python opnieuw te bemonsteren:
#find sum of values in column1 by month weekly_df[' column1 '] = df[' column1 ']. resample (' M '). sum () #find mean of values in column1 by week weekly_df[' column1 '] = df[' column1 ']. resample (' W '). mean ()
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 kunt samplen.
Voorbeeld: tijdreeksgegevens opnieuw samplen in Python
Stel dat we het volgende panda’s DataFrame hebben dat de totale omzet weergeeft die elk uur door een bedrijf over een periode van één jaar wordt gerealiseerd:
import pandas as pd import numpy as np #make this example reproducible n.p. random . seeds (0) #create DataFrame with hourly index df = pd. DataFrame (index= pd.date_range (' 2020-01-06 ', ' 2020-12-27 ', freq=' h ')) #add column to show sales by hour df[' sales '] = np. random . randint (low=0, high=20, size= len (df. index )) #view first five rows of DataFrame df. head () dirty 2020-01-06 00:00:00 12 2020-01-06 01:00:00 15 2020-01-06 02:00:00 0 2020-01-06 03:00:00 3 2020-01-06 04:00:00 3
Als we een lijndiagram maken om verkoopgegevens te visualiseren, zou het er als volgt uitzien:
import matplotlib. pyplot as plt
#plot time series data
plt. plot (df. index , df. sales , linewidth= 3 )
Deze grafiek is moeilijk te interpreteren, dus we kunnen de verkoopgegevens per week samenvatten:
#create new DataFrame
weekly_df = pd. DataFrame ()
#create 'sales' column that summarizes total sales by week
weekly_df[' sales '] = df[' sales ']. resample (' W '). sum ()
#view first five rows of DataFrame
weekly_df. head ()
dirty
2020-01-12 1519
2020-01-19 1589
2020-01-26 1540
2020-02-02 1562
2020-02-09 1614
Dit nieuwe DataFrame toont de som van de verkopen per week.
We kunnen dan een tijdreeksplot maken met behulp van deze wekelijkse gegevens:
import matplotlib. pyplot as plt
#plot weekly sales data
plt. plot ( weekly_df.index , weekly_df.sales , linewidth= 3 )
Dit diagram is veel gemakkelijker te lezen omdat we alleen verkoopgegevens voor 51 individuele weken weergeven, in tegenstelling tot verkoopgegevens voor 8.545 individuele uren in het eerste voorbeeld.
Opmerking : in dit voorbeeld hebben we de verkoopgegevens per week samengevat, maar we kunnen deze ook per maand of kwartaal samenvatten als we nog minder gegevenspunten willen weergeven.
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