Я бы использовал функцию линейного прогресса scipy stats, чтобы получить наиболее подходящее уравнение для прогнозирования будущего использования, вы также можете использовать np.polyfit и np.poly1d, как рекомендовано Крисом А. Следующее охватывает оба, что-то вроде этого:
#Import the necessary libraries
import matplotlib.pyplot as plot
from scipy import stats
import numpy as np
# recreating the data arrays
data = [["2020-03-03",9.727273],
["2020-03-04",9.800000],
["2020-03-05",9.727273],
["2020-03-06",10.818182],
["2020-03-07",9.500000],
["2020-03-08",10.909091],
["2020-03-09",15.000000],
["2020-03-10",14.333333],
["2020-03-11",15.333333],
["2020-03-12",16.000000],
["2020-03-13",21.000000],
["2020-03-14",28.833333]]
fig, ax = plot.subplots()
# Separating string array and CPU usage array
dates = [x[0] for x in data]
usage = [x[1] for x in data]
# dates are linear so just use len of usage array and save dates as tick labels
bestfit = stats.linregress(range(len(usage)),usage)
equation = str(round(bestfit[0],2)) + "x + " + str(round(bestfit[1],2))
ax.plot(range(len(usage)), usage)
ax.plot(range(len(usage)), np.poly1d(np.polyfit(range(len(usage)), usage, 1))(range(len(usage))), '--',label=equation)
# Add how many days ahead you want to prediction
extension = 5
# Extended prediction
for x in range(len(usage),len(usage)+extension):
usage.append((bestfit[0]*x)+bestfit[1]) # mx + c from linear regression found before
day = str()
newdate = dates[-1][0:8]+str(int(dates[-1][-2:])+1)
dates.append(newdate)
ax.plot(range(len(usage)), np.poly1d(np.polyfit(range(len(usage)), usage, 1))(range(len(usage))), ':',label=str(extension)+" day prediction")
# Set date tick labels and legend
plot.xticks(range(len(dates)))
ax.set_xticklabels(dates)
plot.legend()
# Display plot
plot.show()
![enter image description here](https://i.stack.imgur.com/0RzSU.png)