时间序列回归模型问题

时间:2018-06-12 17:32:19

标签: python numpy statistics regression

我是Python新手,试图做一个时间序列回归模型。我有3列,X,Y和日期。我导入了下面的所有内容,但我遇到了错误。

import numpy as np
from sklearn import linear_model
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
from matplotlib.pylab import rcParams
rcParams['figure.figsize'] = 15, 6
import statsmodels.api as sm
import statsmodels.formula.api as smf
from statsmodels.tsa.stattools import adfuller
raw_data = pd.read_csv("IMF and BBG Fair Values.csv")
ISO_TH = raw_data[["IMF_VALUE", "BBG_FV", "IMF_DATE"]]

过滤以摆脱NaaN

filtered_TH = ISO_TH[np.isfinite(raw_data['BBG_FV'])]

我收到此错误

C:\ Program Files \ Anaconda3 \ lib \ site-packages \ pandas \ core \ generic.py:2698:SettingWithCopyWarning: 尝试在DataFrame的切片副本上设置值。 尝试使用.loc [row_indexer,col_indexer] = value而不是

请参阅文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy   self [name] = value

1 个答案:

答案 0 :(得分:1)

您的问题与您链接的pandas文档中的问题完全相同。看看他们在那里提供的最小例子:

def do_something(df):
   foo = df[['bar', 'baz']]  # Is foo a view? A copy? Nobody knows!
   # ... many lines here ...
   foo['quux'] = value       # We don't know whether this will modify df or not!
   return foo 

问题是foo可能是数据框df的副本或视图。如果是视图,则foo上的更改也会影响原始数据框df。如果foo是副本,则行foo['quux'] = valuedf无效。

这现在如何转化为您的问题?

首先从*.csv文件创建数据框:

raw_data = pd.read_csv("IMF and BBG Fair Values.csv")

然后选择列" IMF_VALUE"," BBG_FV"," IMF_DATE"来自数据框raw_data的方式如下:

ISO_TH = raw_data[["IMF_VALUE", "BBG_FV", "IMF_DATE"]]

现在,这看起来非常类似于文档中的第二行:

foo = df[['bar', 'baz']]

您的ISO_THraw_data的观点还是副本?我们不是现在!那么如果我们更改ISO_TH列,会发生什么? raw_data也会改变吗?我们现在不是警告。

玩具示例:

import pandas as pd
import numpy as np
raw_data=pd.DataFrame([[np.inf,22,333,44], [3,4,5,2],[1,2,3,4],[np.inf,0,0,0]],columns=["BBG_FV", "IMF_VALUE", "IMF_DATE", "unused"])
ISO_TH = raw_data[["IMF_VALUE", "BBG_FV", "IMF_DATE"]]
# if we now change ISO_TH, we get a warning
ISO_TH.IMF_VALUE=[0,0,0,0] # SettingWithCopyWarning

您从filtered_TH创建中间对象ISO_TH的事实在此处不会发生任何变化。

我们如何解决这个问题?很简单,我们阅读文档并做那里写的内容!

ISO_TH = raw_data.loc[:,["IMF_VALUE", "BBG_FV", "IMF_DATE"]]

继续像往常一样。

其他信息:What rules does Pandas use to generate a view vs a copy?