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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *