Python Scipy曲线拟合“;数组不能包含INF或NAN“;
我正在尝试用scipy curve_fit拟合数据,并不断调整VALUETERROR:数组不能包含INF或NAN 你知道我的代码有什么问题吗Python Scipy曲线拟合“;数组不能包含INF或NAN“;,python,pandas,scipy,Python,Pandas,Scipy,我正在尝试用scipy curve_fit拟合数据,并不断调整VALUETERROR:数组不能包含INF或NAN 你知道我的代码有什么问题吗 df['kKfz_gesamt'] = (df['qKfz_gesamt'] / df['vKfz_gesamt']) df1 = df.loc[(df.index >= '2018-01-01') & (df.index < '2018-01-31')] df1 = df1.loc[(df.Status == 'SR_CLOSE')
df['kKfz_gesamt'] = (df['qKfz_gesamt'] / df['vKfz_gesamt'])
df1 = df.loc[(df.index >= '2018-01-01') & (df.index < '2018-01-31')]
df1 = df1.loc[(df.Status == 'SR_CLOSE')]
df2 = df1.resample('5min').mean().dropna()
k1 = df2.kKfz_gesamt
v1 = df2.vKfz_gesamt
fig, ax = plt.subplots()
ax.scatter(k1,v1,s=2,label='nach',color='blue')
### Fit
v0 = 125
from scipy.optimize import curve_fit
def func(v, c1, c2, c3):
return 1 / (c1 + (c2/(v0 - x)) + c3 * v)
xdata = v1
ydata = k1
popt, pcov = curve_fit(func, xdata, ydata, p0=[0.1,0.1,0.1],maxfev=5000)
plt.plot(xdata, func(xdata, *popt), 'r-',label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))
popt
请发布
df2.info()的结果。
谢谢。我刚刚公布了结果。这有帮助吗?我认为func()函数在返回1/something时出现问题,当分母变为零时可能会导致infs,因此可能会出现值错误,因为它为某些值指定了inf。可以肯定的是,您的def func
有问题。函数参数是def func(v,c1,c2,c3):
其中第一个参数必须是自变量。那么1)是v
还是x
是自变量?2) x
在函数中使用,但未在函数参数中定义;3) v0
在函数内部使用,但在函数外部定义,在参数中未定义。因此A)修复将所有参数和变量作为参数传递的函数;B) 要做到这一点,您必须检查您的函数域,正如@PATHIKGHUGARE所说的,您需要排除分母==0的奇点
DatetimeIndex: 7309 entries, 2018-01-01 01:00:00 to 2018-12-31 23:00:00
Data columns (total 11 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 qKfz_2ÜFS 7309 non-null float64
1 qKfz_1ÜFS 7309 non-null float64
2 qKfz_HFS 7309 non-null float64
3 qKfz_TSF 7309 non-null float64
4 qKfz_gesamt 7309 non-null float64
5 vKfz_gesamt 7309 non-null float64
6 qLkw_gesamt 7309 non-null float64
7 vPkw_gesamt 7309 non-null float64
8 count_open 7309 non-null float64
9 count_close 7309 non-null float64
10 kKfz_gesamt 7309 non-null float64
´´´