Jak ponownie próbkować dane szeregów czasowych w pythonie (z przykładami)
Ponowne próbkowanie danych szeregów czasowych oznacza podsumowanie lub agregację danych w nowym okresie.
Do ponownego próbkowania danych szeregów czasowych w Pythonie możemy użyć następującej podstawowej składni:
#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 ()
Należy pamiętać, że możemy ponownie próbkować dane szeregów czasowych do różnych okresów, w tym:
- P .: Sekundy
- min : minuty
- H : Godziny
- J :Dzień
- W : Tydzień
- M : Miesiąc
- P : Kwartał
- O : Rok
Poniższy przykład pokazuje, jak w praktyce ponownie próbkować dane szeregów czasowych.
Przykład: ponowne próbkowanie danych szeregów czasowych w Pythonie
Załóżmy, że mamy następującą ramkę danych pand, która pokazuje całkowitą sprzedaż zrealizowaną przez firmę co godzinę w okresie jednego roku:
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
Jeśli utworzymy wykres liniowy do wizualizacji danych sprzedażowych, wyglądałoby to tak:
import matplotlib. pyplot as plt
#plot time series data
plt. plot (df. index , df. sales , linewidth= 3 )
Wykres ten jest trudny do zinterpretowania, dlatego możemy podsumować dane sprzedażowe w poszczególnych tygodniach:
#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
Ta nowa ramka DataFrame pokazuje sumę sprzedaży tygodniowej.
Następnie możemy utworzyć wykres szeregów czasowych, korzystając z tych danych tygodniowych:
import matplotlib. pyplot as plt
#plot weekly sales data
plt. plot ( weekly_df.index , weekly_df.sales , linewidth= 3 )
Ten wykres jest znacznie łatwiejszy do odczytania, ponieważ przedstawiamy dane dotyczące sprzedaży tylko za 51 poszczególnych tygodni, w przeciwieństwie do danych dotyczących sprzedaży za 8545 poszczególnych godzin w pierwszym przykładzie.
Uwaga : w tym przykładzie podsumowaliśmy dane dotyczące sprzedaży według tygodni, ale moglibyśmy również podsumować je według miesięcy lub kwartałów, jeśli chcemy wykreślić jeszcze mniej punktów danych.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w Pythonie:
Jak wykreślić szereg czasowy w Matplotlib
Jak wykreślić szereg czasowy w Seaborn
Jak obliczyć MAPE z szeregów czasowych w Pythonie