Python Scipy曲线拟合“;数组不能包含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')

我正在尝试用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')]
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
´´´