Я работаю над набором данных временных рядов показаний датчиков, собираемых каждые 5 минут в течение 3 месяцев. В наборе данных примерно 15% пропущенных значений разбросано по всему набору данных, но некоторые пробелы достигают 2–3 часов.
Текущий подход
В настоящее время я использую прямое заполнение (
Код: Выделить всё
ffill()python
Код: Выделить всё
import pandas as pd
df['sensor_reading'] = df['sensor_reading'].fillna(method='ffill')
Упреждающее заполнение работает для небольших промежутков (5–10 минут), но для более крупных промежутков (1–3 часа) оно создает нереалистичные плоские шаблоны, которые не отражают фактическое поведение датчика. Это влияет на мой последующий анализ и прогнозы.
Что я пробовал
- Интерполяция – работает лучше, но по-прежнему не справляется с большими пробелами
- Прямое заполнение с ограничением – оставляет значения NaN для больших пробелов
- Вменение среднего/медианы – не фиксирует временные закономерности
python
Код: Выделить всё
timestamp sensor_reading
2024-01-01 00:00:00 23.5
2024-01-01 00:05:00 23.7
2024-01-01 00:10:00 NaN
2024-01-01 00:15:00 NaN
2024-01-01 00:20:00 NaN
... (20 more missing values)
2024-01-01 02:00:00 25.1
Каковы наилучшие методы обработки больших пробелов в данных датчиков временных рядов? Должен ли я:
- Использовать разные методы вменения в зависимости от размера разрыва?
- Отметить большие пробелы и исключить их из анализа?
- Использовать прогнозную модель (ARIMA/LSTM) для заполнения пробелов?
- Считаете качество данных слишком плохим и собираете новые данные?
- Python 3.10
- Pandas 2.0.3
- Размер набора данных: ~ 26 000 строк
Подробнее здесь: https://stackoverflow.com/questions/798 ... ates-unrea
Мобильная версия