【发布时间】:2021-02-01 18:28:22
【问题描述】:
我是 python 的初学者。我有一个excel文件。它有 4 列。第一列是日期,其他列分别是速度 (v)、温度 (t) 和压力 (p)。这个 excel 文件包含一年的数据。这是我的 excel 文件的示例。
Date V t p
2016-01-01 0.01 2 7
2016-01-02 0.04 2.1 6.6
.
.
.
2016-12-30 0.07 4 5
我想通过线性方程将温度和压力与速度相匹配。
V = a*t+b*p+c
我想通过曲线拟合 Scipy 包找到 a、b 和 c。我想我应该使用循环!这是我的代码。
import pandas as pd
from datetime import datetime, timedelta
from matplotlib import pyplot as plt
from matplotlib import dates as mpl_dates
from matplotlib.dates import date2num
from scipy.optimize import curve_fit
from scipy.optimize import least_squares
df =pd.read_excel ('final-all-filters.xlsx')
x = df['Date']
V = df['V']
t = df['t']
p = df['p']
def model(a, b, c):
return a*t+b*p+c
popt,pcov = curve_fit (model, t, p, V, maxfev = 10000)
plt.plot(t, p, V, label="Original Noised Data")
plt.plot(t, p, model(t, p, *popt), 'r-', label="Fitted Curve")
plt.legend()
plt.show()
【问题讨论】:
标签: python pandas dataframe curve-fitting scipy-optimize