Повторная выборка данных временных рядов означает суммирование или агрегирование данных за новый период времени.
Мы можем использовать следующий базовый синтаксис для повторной выборки данных временных рядов в 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
Предположим, у нас есть следующий кадр данных pandas, который показывает общий объем продаж, совершаемых какой-либо компанией каждый час в течение одного года:
import pandas as pd
import numpy as np
#make this example reproducible
np.random.seed (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 ()
sales
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 ()
sales
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 отдельную неделю, в отличие от данных о продажах за 8 545 отдельных часов в первом примере.
Примечание.В этом примере мы суммировали данные о продажах по неделям, но мы также можем суммировать данные по месяцам или кварталам, если хотим нанести еще меньше точек данных.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в Python:
Как построить временной ряд в Matplotlib
Как построить временной ряд в Seaborn
Как рассчитать MAPE временных рядов в Python