Я пытаюсь использовать LOWESS для сглаживания следующих данных:
https://i.stack.imgur.com/T7bKq.png
Я хотел бы получить плавную линию, которая отфильтровывает пики в данных.Мой код выглядит следующим образом:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import HourLocator, DayLocator, DateFormatter
from statsmodels.nonparametric.smoothers_lowess import lowess
file = r'C:...'
df = pd.read_csv(file) # reads data file
df['Date'] = pd.to_datetime(df['Time Local'], format='%d/%m/%Y %H:%M')
x = df['Date']
y1 = df['CTk2 Level']
filtered = lowess(y1, x, is_sorted=True, frac=0.025, it=0)
plt.plot(x, y1, 'r')
plt.plot(filtered[:,0], filtered[:,1], 'b')
plt.show()
Когда я запускаю этот код, я получаю следующую ошибку:
ValueError: минимум ограничения просмотра -7.641460199922635e + 16 меньше 1и является недопустимым значением даты Matplotlib.Это часто происходит, если вы передаете значение, отличное от даты и времени, на ось с датой и временем
Дата в моих данных представлена в формате 07/05/2018 00:07:00.Я думаю, что проблема в том, что LOWESS изо всех сил пытается работать с данными даты и времени, но не уверен?
Не могли бы вы помочь мне?