Не получается построить линейный график зависимости одной величины от даты
Я делаю модель ML - прогноз качества связи на основе временных рядов. Я загрузил датасет, подготовил его. Хочу построить линейный график зависимости одной величины от даты, но вместо этого у меня получается "каша" (зам.ред. см. скрин в истории изменений):
import pandas as pd
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from glob import glob
from datetime import datetime, time
from pandas.plotting import autocorrelation_plot
from statsmodels.graphics.tsaplots import plot_acf
files = glob("/content/newDataset/*.tsv")
dataset = pd.concat([pd.read_csv(f, sep="\t", skiprows=1) for f in files],
ignore_index=True)
n_samples = 6992974
dt_from = pd.to_datetime("2016-01-15 00:00:00.000000")
dt_to = pd.to_datetime("2016-01-28 23:59:59.999999")
dataset["DateTime"] = pd.date_range(dt_from, dt_to, periods=n_samples)
dataset['LQ'] = dataset.LQ.astype('float64')
dataset.head()
def plot_series(time, series, format="-", start=0, end=None, label=None):
plt.plot(time[start:end], series[start:end], format, label=label)
plt.xlabel("DateTime")
plt.ylabel("LQ")
if label:
plt.legend(fontsize=14)
plt.grid(True)
def trend(time, slope=0):
return slope * time
time = dataset['DateTime']
series = dataset['LQ']
plt.figure(figsize=(10, 6))
plot_series(time, series)
plt.show()
С чем это может быть связанно?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Вы пытаетесь соединить отрезками почти 7 милионов точек на одном маленьком графике. Наверняка получается "каша".
В таких случаях обычно рисуют скользящее среднее (среднее в скользящем окне):
dataset.set_index("DateTime")["LQ"].rolling(window=1000).mean().plot()
PS попробуйте настроить размер окна (window) так, чтобы получился удовлетворяющий вас график.