Решено: обратное заполнение панд после повышения дискретизации

В современном мире обработка и анализ данных необходимы для понимания различных явлений и принятия обоснованных решений. Одной из распространенных задач в анализе данных является повторная выборка данных временных рядов, которая включает изменение частоты данных либо путем повышающей выборки (увеличение частоты), либо с пониженной частотой (уменьшения частоты). В этой статье мы обсудим процесс обратного заполнения при повышающей дискретизации данных временных рядов с использованием мощной библиотеки 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. Понимая и применяя эти методы, мы можем эффективно манипулировать данными временных рядов и анализировать их, обнаруживая ценные сведения и принимая обоснованные решения.

Похожие посты:

Оставьте комментарий