Обработка пропущенных значений в данных временных рядов: подробное руководство

Отсутствующие значения — распространенная проблема при работе с данными временных рядов. Наборы данных временных рядов часто имеют пробелы или неточности по разным причинам, таким как неисправности датчиков, ошибки передачи данных или просто отсутствие доступных данных. Обработка пропущенных значений имеет решающее значение для точного анализа и моделирования данных временных рядов. В этой статье мы рассмотрим несколько методов обработки пропущенных значений в данных временных рядов, а также приведем примеры кода на Python.

  1. Удаление пропущенных значений.
    Самый простой способ обработки пропущенных значений — удалить строки или моменты времени, содержащие пропущенные значения. Этот метод можно использовать, когда пропущенные значения являются случайными и их удаление не оказывает существенного влияния на общий набор данных. Вот пример того, как удалить пропущенные значения с помощью библиотеки Pandas в Python:
import pandas as pd
# Assuming 'df' is the DataFrame containing time series data
df.dropna(inplace=True)
  1. Заполнение вперед (или перенос последнего наблюдения вперед – LOCF):
    В этом методе недостающие значения заполняются последним наблюдаемым значением. Этот подход предполагает, что самое последнее наблюдение является разумной оценкой недостающего значения. Вот пример:
import pandas as pd
# Assuming 'df' is the DataFrame containing time series data
df.fillna(method='ffill', inplace=True)
  1. Обратное заполнение (или следующее наблюдение, переносимое назад – NOCB):
    Подобно прямому заполнению, этот метод заполняет пропущенные значения следующим наблюдаемым значением. Предполагается, что будущие наблюдения являются разумной оценкой недостающих значений. Пример:
import pandas as pd
# Assuming 'df' is the DataFrame containing time series data
df.fillna(method='bfill', inplace=True)
  1. Линейная интерполяция.
    Линейная интерполяция оценивает недостающие значения на основе линейной зависимости между окружающими наблюдаемыми значениями. Он предполагает линейный тренд между доступными точками данных. Вот пример:
import pandas as pd
# Assuming 'df' is the DataFrame containing time series data
df.interpolate(method='linear', inplace=True)
  1. Сезонное разложение временных рядов (STL):
    STL — это метод, который разлагает временные ряды на трендовые, сезонные и остаточные компоненты. Его можно использовать для оценки недостающих значений на основе закономерностей, наблюдаемых в тренде и сезонных компонентах. Пример:
import pandas as pd
from statsmodels.tsa.seasonal import STL
# Assuming 'df' is the DataFrame containing time series data
stl = STL(df, seasonal=True)
res = stl.fit()
df['filled_values'] = res.fittedvalues
  1. Вменение на основе машинного обучения.
    Алгоритмы машинного обучения можно использовать для прогнозирования пропущенных значений на основе доступных данных. Для этой цели можно использовать такие методы, как регрессия, случайные леса или модели глубокого обучения. Вот пример использования случайного регрессора леса:
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
# Assuming 'df' is the DataFrame containing time series data
# Splitting the data into features (X) and target (y)
X = df.dropna().drop('target_variable', axis=1)
y = df.dropna()['target_variable']
# Creating a random forest regressor and fitting the model
rf = RandomForestRegressor()
rf.fit(X, y)
# Predicting missing values
missing_data = df[df['target_variable'].isnull()].drop('target_variable', axis=1)
predicted_values = rf.predict(missing_data)
# Filling missing values
df.loc[df['target_variable'].isnull(), 'target_variable'] = predicted_values

Обработка пропущенных значений в данных временных рядов необходима для точного анализа и моделирования. В этой статье мы обсудили несколько методов, в том числе удаление пропущенных значений, прямое заполнение, обратное заполнение, линейную интерполяцию, сезонную декомпозицию и вменение на основе машинного обучения. Выбор метода зависит от характеристик данных и конкретных требований анализа. Используя эти методы, вы можете быть уверены, что пропущенные значения не будут мешать выполнению задач по анализу временных рядов и моделированию.