Как выполнить повторную выборку данных временных рядов в python (с примерами)


Повторная выборка данных временных рядов означает суммирование или агрегирование данных за новый период.

Мы можем использовать следующий базовый синтаксис для повторной выборки данных временных рядов в Python:

 #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 () 

Обратите внимание, что мы можем выполнить повторную выборку данных временных рядов для разных периодов времени, в том числе:

  • С : Секунды
  • мин : Минуты
  • Ч : Часы
  • Дж : День
  • В : Неделя
  • М : Месяц
  • Вопрос : Четверть
  • А : Год

В следующем примере показано, как на практике выполнить повторную выборку данных временных рядов.

Пример: повторная выборка данных временных рядов в Python

Предположим, у нас есть следующий DataFrame pandas, который показывает общий объем продаж, совершаемых компанией каждый час за период в один год:

 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

Если мы создадим линейный график для визуализации данных о продажах, он будет выглядеть так:

 import matplotlib. pyplot as plt

#plot time series data
plt. plot (df. index , df. sales , linewidth= 3 ) 

Эту диаграмму сложно интерпретировать, поэтому можно суммировать данные о продажах по неделям:

 #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

Этот новый DataFrame показывает сумму продаж за неделю.

Затем мы можем создать график временных рядов, используя эти еженедельные данные:

 import matplotlib. pyplot as plt

#plot weekly sales data
plt. plot ( weekly_df.index , weekly_df.sales , linewidth= 3 ) 

Эту диаграмму гораздо легче читать, поскольку мы представляем данные о продажах только за 51 отдельную неделю, в отличие от данных о продажах за 8545 отдельных часов в первом примере.

Примечание . В этом примере мы суммировали данные о продажах по неделям, но мы также можем суммировать их по месяцам или кварталам, если хотим построить еще меньше точек данных.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в Python:

Как построить временной ряд в Matplotlib
Как построить временной ряд в Seaborn
Как рассчитать MAPE по временным рядам в Python

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *