我正在尝试创建一组指数曲线方程来解释价格和单位。在下面的说明性数据中,它将是每个地理 - 团队组合的一个等式(或一组系数)。我需要系数,所以我可以得到每个集的方程:y = A * K ^(Bx)。
来自csv的说明性数据(实际上,有几十个地理和团队,每个都有50到100个数据点,因此希望避免一次做一个)。波士顿凯尔特人队将有自己的等式或系数,波士顿爱国者队自己,芝加哥公牛队自己的等等:
Geography Team Price Tickets
Boston Celtics 100 800
Boston Celtics 95 810
Boston Celtics 90 870
Boston Celtics 80 1010
Boston Patriots 117 500
Boston Patriots 123 520
Boston Patriots 110 550
Boston Patriots 102 605
Boston Patriots 97 630
Chicago Bulls 82 200
Chicago Bulls 80 205
Chicago Bulls 70 206
Chicago Bulls 68 215
Chicago Bulls 62 228
Chicago Bears 95 305
Chicago Bears 91 311
Chicago Bears 89 317
Chicago Bears 81 320
Chicago Bears 82 322
Chicago Bears 70 340
这是我的代码:
import pandas as pd
import numpy as np
import scipy
data = pd.read_csv(r'C:\PyCharm\Scripts\teams.csv')
data = data.groupby(['Geography','Team']).apply(scipy.optimize.curve_fit(lambda t,a,b: a*np.exp(b*t), data['Price'], data['Tickets'], p0=(5000, -0.3)))
data.to_csv(r'C:\PyCharm\Scripts\Coefs.csv')
尝试运行时,收到以下错误消息:
TypeError:不可用类型:'numpy.ndarray'
答案 0 :(得分:1)
IIUC
from scipy.optimize import curve_fit
data = data.groupby(['Geography','Team']).apply(lambda x : curve_fit(lambda t,a,b: a*np.exp(b*t), x['Price'], x['Tickets'], p0=(5000, -0.3)))