Python 根据结果使用R数据帧、动物园和实际日期进行预测

Python 根据结果使用R数据帧、动物园和实际日期进行预测,python,r,pandas,dataframe,Python,R,Pandas,Dataframe,我有一个CSV,其值如下 ref_date;wings;airfoil;turbines 2015-03-31;123,22;22,77;99,0 2015-04-30;123,22;28,77;99,0 2015-05-31;123,22;22,177;02,0 2015-06-30;56,288;22,77;99,0 我读入一个数据帧,并将其转换为一个时间序列 df_agg = aggregate(df$wings, by=list(date=df$ref_date), FUN=mean)

我有一个CSV,其值如下

ref_date;wings;airfoil;turbines
2015-03-31;123,22;22,77;99,0
2015-04-30;123,22;28,77;99,0
2015-05-31;123,22;22,177;02,0
2015-06-30;56,288;22,77;99,0
我读入一个数据帧,并将其转换为一个时间序列

df_agg = aggregate(df$wings, by=list(date=df$ref_date), FUN=mean)
df_agg['date'] = as.Date(df_agg[['date']], format='%Y-%m-%d')
tt = xts(df_agg[,c('x')], order.by=df_agg$date)
现在我有了
tt
,一个
xts
对象。要使用
forecast
包,我必须将其转换为
ts
对象,因此我使用
zoo

pred = forecast(zoo(tt))

df_pred = as.data.frame(pred)
但是,为了能够得到带有日期的列而不是数字序列的结果,我必须使用

zoo(df_pred, as.Date(as.numeric(rownames(df_pred))))
现在我有一个结果,比如

             Forecast  Lo 80    Hi 80    Lo 95    Hi 95
2015-07-30   12          10      15      11       14
2015-08-31   13.4        11      15.4    11.2     13
有没有一种方法可以实现同样的功能,而不必在数据帧、xts、zoo、ts和zoo之间来回切换

在Python中,这类似于

 from statsmodels.api import sm
 df = pd.read_csv(file_csv)
 df.index = pd.to_datetime(df.date, format='%Y-%m-%d')
 y_pred = sm.ARIMA(df)
1)zooforecast软件包的开发版本为
as.ts.forecast
,zoo的开发版本(即将成为zoo版本1.8.0)具有增强的
as.zoo.ts
,默认情况下,该版本对频率为4和12的ts系列应用yearmon/yearqtr。这些因素结合在一起将使问题代码编写得更加紧凑。由于forecast软件包不明确支持非ts时间序列,因此定义一种简单的预测单线zoo方法。然后使用
read.zoo
读取数据。为了使用注释末尾的数据保持这种自包含性,我们使用了
text=Lines
,但实际上它将被类似于
myfile.dat
的内容所取代。
read.zoo
命令还将yearmon类应用于索引,并使用平均值对其进行聚合。最后运行
forecast
,然后将输出转换为zoo类。整个序列只涉及一次转换,唯一需要的原因是forecast只支持ts

library(forecast)
library(zoo)

as.zoo.forecast <- function(x, ...) as.zoo(as.ts(x))

z <- read.zoo(text = Lines, header = TRUE, sep = ";", dec = ",", 
  FUN = as.yearmon, aggregate = mean)
f <- forecast(z$wings)
as.zoo(f)
注意:以上我们使用了以下输入:

Lines <- "ref_date;wings;airfoil;turbines
2015-03-31;123,22;22,77;99,0
2015-04-30;123,22;28,77;99,0
2015-05-31;123,22;22,177;02,0
2015-06-30;56,288;22,77;99,0"

行为什么在这里标记Python熊猫?R有一个内置的.Python作为标记,因为许多使用Python的数据科学家都使用R,Python示例可以帮助理解我试图解决的问题。有没有一种方法可以设置任何对象的索引,从
pandas
的意义上说,因此,它可以在整个计算过程中保持不变?如果使用
forecast
,则不能直接保存。你总是可以编写一个包装函数来隐藏转换。除了
forecast
,还有没有更好的选项来进行自动选择的ARIMA?我会坚持使用
forecast
包。
tt <- as.ts(z)
f <- forecast(tt[, "wings"])
as.ts(f)
Lines <- "ref_date;wings;airfoil;turbines
2015-03-31;123,22;22,77;99,0
2015-04-30;123,22;28,77;99,0
2015-05-31;123,22;22,177;02,0
2015-06-30;56,288;22,77;99,0"