使用polyfit后如何获得趋势线方程?

How to get trendline equation after using polyfit?

这是我的数据:

x轴是_time,y轴是IdCount。我先将 _time 转换为日期时间,然后使用以下代码进行浮动:

#to datetime
df['_time'] = pd.to_datetime(df['_time'])
#creating list of _time column
time = df['_time'].tolist()
#time to float in order to make np.polyfit work
def datetime_to_float(d):
    return d.timestamp()

time_in_float = []

for i in time:
    time_in_float.append(datetime_to_float(i))

在此之后我将 time_in_float 添加到我的 pandas 数据框:

df['time_float'] = time_in_float

并定义了 x 和 y 变量:

x = df['time_float']
y = df['IdCount']

我使用以下代码在我的数据中绘制趋势线:

plt.plot(x, y)

z = np.polyfit(x, y, 1)
p = np.poly1d(z)
plt.plot(x,p(x),"r--")

plt.show()

我现在想得到这条趋势线的方程式:y = ax + b

我使用了在 Whosebug 上找到的这段代码:

print("{0}x + {1}".format(*z))

但是我得到的参数没有多大意义。

我应该如何修改我的代码?

谢谢!

编辑:这里的代码没问题,但提供的解决方案效果更好。

我建议您以这种方式将日期转换为浮动日期(以秒为单位):

df['_time'] = pd.to_datetime(df['_time'])

# compute timedelta from initial time
dt = df['_time'] - df['_time'][0]

# convert timedelta to seconds
# you can choose hours or days or other units here if you want
df['time_float']= dt.astype('timedelta64[s]')