Данные временных рядов часто поступают с разной частотой и разрешением. Чтобы эффективно анализировать или сравнивать такие данные, важно выполнить их повторную выборку с постоянной частотой. Python предоставляет несколько мощных библиотек, таких как pandas и NumPy, которые предлагают различные методы повторной выборки данных временных рядов. В этой статье мы рассмотрим некоторые часто используемые методы повторной выборки и приведем примеры кода, которые помогут вам профессионально обрабатывать данные временных рядов.
- Повышение разрешения:
Повышение частоты дискретизации означает увеличение частоты или разрешения данных временных рядов. Это может быть полезно, если вы хотите изучить данные с более высокой степенью детализации. Давайте посмотрим, как этого можно добиться с помощью библиотеки pandas:
import pandas as pd
# Create a sample time series DataFrame
df = pd.DataFrame({'date': pd.date_range(start='2022-01-01', end='2022-01-10', freq='D'),
'value': range(10)})
# Upsample the DataFrame to hourly frequency using forward fill
df_upsampled = df.resample('H', on='date').ffill()
print(df_upsampled.head())
В приведенном выше коде мы сначала создаем образец DataFrame временного ряда с ежедневной частотой. Затем мы используем метод resampleс частотным кодом 'H'для повышения частоты дискретизации данных до почасовой частоты. Функция ffill()используется для заполнения пропущенных значений.
- Понижение разрешения:
С другой стороны, понижение разрешения предполагает уменьшение частоты или разрешения данных временных рядов. Это полезно, когда у вас есть высокочастотные данные и вы хотите проанализировать их с более низкой частотой. Давайте посмотрим пример понижения разрешения с использованием pandas:
import pandas as pd
# Create a sample time series DataFrame
df = pd.DataFrame({'date': pd.date_range(start='2022-01-01', end='2022-01-10', freq='H'),
'value': range(241)})
# Downsampling the DataFrame to daily frequency using mean aggregation
df_downsampled = df.resample('D', on='date').mean()
print(df_downsampled.head())
В приведенном выше коде мы создаем образец DataFrame временного ряда с почасовой частотой. Затем мы используем метод resampleс кодом частоты 'D'для понижения частоты данных до ежедневной частоты. Функция mean()используется для агрегирования значений за каждый день.
- Интерполяция:
Интерполяция – это метод, используемый при повторной выборке данных временных рядов для заполнения пропущенных значений. Он оценивает значения на основе существующих точек данных. Давайте посмотрим, как выполнить интерполяцию с помощью панд:
import pandas as pd
# Create a sample time series DataFrame with missing values
df = pd.DataFrame({'date': pd.date_range(start='2022-01-01', end='2022-01-10', freq='D'),
'value': [1, None, 3, None, 5, 6, None, 8, None, 10]})
# Interpolate the missing values using linear interpolation
df_interpolated = df.interpolate()
print(df_interpolated.head())
В приведенном выше коде мы создаем образец DataFrame временного ряда с некоторыми пропущенными значениями, представленными как None. Затем метод interpolate()используется для заполнения пропущенных значений с помощью линейной интерполяции.
- Прокручивающееся окно:
Перевыборка данных временных рядов с использованием скользящего окна предполагает создание нового временного ряда путем применения скользящих вычислений к указанному размеру окна. Это полезно для сглаживания данных или расчета скользящих средних. Вот пример использования pandas:
import pandas as pd
# Create a sample time series DataFrame
df = pd.DataFrame({'date': pd.date_range(start='2022-01-01', end='2022-01-10', freq='D'),
'value': range(10)})
# Calculate the rolling average with a window size of 3
df_rolling = df.rolling(window=3, on='date').mean()
print(df_rolling.head())
В приведенном выше коде мы создаем образец DataFrame временного ряда. Затем метод rollingиспользуется для расчета скользящего среднего с размером окна 3. Это означает, что каждое значение в результирующем временном ряду представляет собой среднее значение текущего значения и двух предыдущих значений.р>
Перевыборка данных временных рядов — важный шаг в анализе и сравнении наборов данных, основанных на времени. В этой статье мы рассмотрели различные методы повторной выборки в Python с использованием библиотеки pandas. Мы рассмотрели повышающую, понижающую дискретизацию, интерполяцию и вычисления скользящего окна. Используя эти методы, вы можете эффективно манипулировать данными временных рядов и анализировать их, чтобы получить ценную информацию.