В современном мире обработка и анализ данных необходимы для понимания различных явлений и принятия обоснованных решений. Одной из распространенных задач в анализе данных является повторная выборка данных временных рядов, которая включает изменение частоты данных либо путем повышающей выборки (увеличение частоты), либо с пониженной частотой (уменьшения частоты). В этой статье мы обсудим процесс обратного заполнения при повышающей дискретизации данных временных рядов с использованием мощной библиотеки Python, Pandas.
Обратное заполнение данных временных рядов
Когда мы повышаем дискретизацию данных временных рядов, мы увеличиваем частоту точек данных, что обычно приводит к отсутствию значений для вновь созданных точек данных. Чтобы заполнить эти недостающие значения, мы можем использовать различные методы. Один из таких методов называется обратное заполнение, также известная как засыпка. Обратное заполнение — это процесс заполнения пропущенных значений следующим доступным значением во временном ряду.
Библиотека панд
Python Библиотека панд — это важный инструмент для манипулирования данными, предлагающий широкий спектр функций для обработки таких структур данных, как DataFrames и данные временных рядов. Pandas имеет встроенные функции, упрощающие работу с данными временных рядов, такие как повторная выборка и заполнение пропущенных значений, что позволяет нам эффективно выполнять обратное заполнение после повышения дискретизации.
Решение: обратная заливка с пандами
Чтобы продемонстрировать процесс применения обратной заливки после повышения дискретизации данных временных рядов с помощью Pandas, рассмотрим простой пример. Мы начнем с импорта необходимых библиотек и создания примера набора данных временных рядов.
import pandas as pd import numpy as np # Create a sample time series dataset date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D') data = np.random.randint(0, 100, size=(len(date_rng), 1)) df = pd.DataFrame(date_rng, columns=['date']) df['value'] = data
Теперь, когда у нас есть образцы данных, мы продолжим повышать дискретизацию и применять метод обратной заливки. В этом примере мы повысим частоту дискретизации с ежедневной частоты до часовой:
# Upsample the data to hourly frequency df.set_index('date', inplace=True) hourly_df = df.resample('H').asfreq() # Apply the backward fill method to fill missing values hourly_df.fillna(method='bfill', inplace=True)
В приведенном выше коде мы сначала установили столбец «дата» в качестве индекса, а затем передискретизировали данные с почасовой частотой, используя resample () функция. В результирующем кадре данных отсутствуют значения из-за повышенной частоты. Затем мы использовали заполнить () метод с параметром "bfill" для выполнения обратной заливки пропущенных значений.
Пошаговое объяснение
Давайте разберем код, чтобы лучше понять его:
1. Сначала мы импортировали библиотеки Pandas и NumPy:
import pandas as pd import numpy as np
2. Мы создали образец набора данных временных рядов, используя диапазон дат() функция от Pandas для генерации ежедневных дат и случайных числовых значений:
date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D') data = np.random.randint(0, 100, size=(len(date_rng), 1)) df = pd.DataFrame(date_rng, columns=['date']) df['value'] = data
3. Затем мы устанавливаем столбец «дата» в качестве индекса и передискретизируем данные с почасовой частотой с resample () и асчастота() функции:
df.set_index('date', inplace=True) hourly_df = df.resample('H').asfreq()
4. Наконец, мы заполнили недостающие значения в кадре данных с повышенной дискретизацией, используя заполнить () метод с параметром 'bfill' для обратной заливки:
hourly_df.fillna(method='bfill', inplace=True)
Заключение
В этой статье мы рассмотрели процесс обратное заполнение после повышения дискретизации данных временного ряда используя мощную библиотеку Pandas в Python. Понимая и применяя эти методы, мы можем эффективно манипулировать данными временных рядов и анализировать их, обнаруживая ценные сведения и принимая обоснованные решения.