Не получается построить линейный график зависимости одной величины от даты

Я делаю модель 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) так, чтобы получился удовлетворяющий вас график.

→ Ссылка