Не уверен, что понимаю, что вы хотите, но я сделаю попытку.
Поскольку вы не предоставили данные, давайте создадим четыре случайных блуждания с разными смещениями:
s1 = pd.Series(0.3 + np.random.normal(size=[100])).cumsum()
s2 = pd.Series(-0.3 + np.random.normal(size=[100])).cumsum()
s3 = pd.Series(0.1 + np.random.normal(size=[100])).cumsum()
s4 = pd.Series(0.1 + np.random.normal(size=[100])).cumsum()
И df
:
df = pd.DataFrame({'s1':s1,
's2':s2,
's3':s3,
's4':s4})
Такой, что сюжет будет
![enter image description here](https://i.stack.imgur.com/5HZpp.png)
Теперь, чтобы соответствовать лучшимВы можете использовать numpy.polyfit
, указав степень 1
b1, a1 = np.polyfit(range(100), s1, 1)
b2, a2 = np.polyfit(range(100), s2, 1)
b3, a3 = np.polyfit(range(100), s3, 1)
b4, a4 = np.polyfit(range(100), s4, 1)
fig, ax = plt.subplots()
ax.plot(np.arange(100), a1 + b1*np.arange(100), color='red')
ax.plot(np.arange(100), a2 + b2*np.arange(100), color='blue')
ax.plot(np.arange(100), a3 + b3*np.arange(100), color='green')
ax.plot(np.arange(100), a4 + b4*np.arange(100), color='black')
Так, что вы получите
![enter image description here](https://i.stack.imgur.com/DLyhr.png)
Чтобы сравнить наиболее подходящую линию с фактическим исходным графиком, установите те же цвета при построении:
ax.plot(np.arange(100), a1 + b1*np.arange(100), color='red')
ax.plot(np.arange(100), a2 + b2*np.arange(100), color='blue')
ax.plot(np.arange(100), a3 + b3*np.arange(100), color='green')
ax.plot(np.arange(100), a4 + b4*np.arange(100), color='black')
ax.plot(df.s1, color='red')
ax.plot(df.s2, color='blue')
ax.plot(df.s3, color='green')
ax.plot(df.s4, color='black')
![enter image description here](https://i.stack.imgur.com/h5lK1.png)