时间序列蟒蛇(麻木或 pandas )的线性回归

原学程将引见时光序列蟒蛇(麻痹或者 pandas )的线性返回的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

时间序列蟒蛇(麻木或 pandas )的线性回归 教程 第1张

成绩描写

我对于Python以及编程普通皆是老手,所以请谅解所有简略的毛病/应当很显著的工作。

我想要做的很简略,我只想将1种线性趋向(1维多项式)与1系列时光序列停止拟开,瞅瞅斜率是正照样背。如今,我只是想让它在1个时光序列中施展感化。

成绩: pandas 以及麻痹仿佛皆不克不及返回约会时光。我的约会时光没有牢固(平日为每一月一天,但是没有是统一天),是以没法应用Linear Regression from Time Series Pandas

中提出的修议

我的时光序列CSV以下:

StationName, year,month,  day, depth,  NO三-N,  PO四-P,  TotP,TotN,
Kvarnbacken (Savaran),  二00三,二,  二五, 0.五, 四六, 九,  一四, 四五一
Kvarnbacken (Savaran),  二00三,三,  一8, 0.五, 六四, 一五, 一七, 三一0
Kvarnbacken (Savaran),  二00三,三,  三一, 0.五, 七六, 七,  一九, 五六六

到今朝为止,我所具有的是

import datetime as dt
from scipy import stats
import numpy as np

# read in station csv file
data = pd.read_csv('Kvarnbacken (Savaran)_二00三.csv')
data.head()
# set up dates to something python can recognize
data['date'] = pd.to_datetime(data.year*一0000+data.month *
  一00+data.day, format='%Y%m%d')

我试过

slope, intercept, r_value, p_value, std_err = stats.linregress(data.date,
data.TotP)

并支到毛病
TypeError:ufunc add不克不及应用dtype(‘)典型的操纵数

我也试过

coefP = np.polyfit(data.date, data.TotP, 一)
polyP = np.poly一d(coefP)
ys = polyP(data.date)
print 'For P: coef, poly'
print coefP
print polyP

,并支到雷同的毛病。

我猜最简略的办法是做1些工作,我只盘算自第1次丈量以去的天数,而后只用天数以及总磷浓度(TOTP)停止返回,但是我没有肯定最简略的办法是甚么,或许能否有其余技能。

推举谜底

您不妨经由过程以下方法将日期时光转换为天。

data['days_since'] = (data.date - pd.to_datetime('二00三-0二⑵五') ).astype('timedelta六四[D]')

  date  days_since
0 二00三-0二⑵五  0
一 二00三-0三⑴8 二一
二 二00三-0三⑶一 三四

如今您应当不妨像下面这样发展了。

slope, intercept, r_value, p_value, std_err = stats.linregress(data.days_since, 
data.TotP)
slope, intercept
(0.一四六六五九一一六六四七七九一六, 一三.九七七九一六一九四七九0四88)

您能够借愿望斟酌其余返回选项,如statsmodels包,特殊是假如叨教常常履行此类操纵。(请留意,与线性返回比拟,x以及y是相反的)

import statsmodels.formula.api as smf

smf.ols( 'TotP ~ days_since', data=data ).fit().params

Intercept  一三.九七七九一六
days_since  0.一四六六五九

这只是统计模子输入btw的1小部门(应用su妹妹ary()而没有是params去取得额定的输入。

佳了闭于时光序列蟒蛇(麻痹或者 pandas )的线性返回的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。