python - 时间序列回归模型问题
问题描述
我是 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"]]
过滤以摆脱NaN
:
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
请参阅文档中的警告
解决方案
您的问题与您链接的熊猫文档中所写的问题完全相同。看看他们在那里提供的最小示例:
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'] = value
不会对df
.
这现在如何转化为您的问题?
您首先从*.csv
文件创建数据框:
raw_data = pd.read_csv("IMF and BBG Fair Values.csv")
raw_data
然后按以下方式从数据框中选择列“IMF_VALUE”、“BBG_FV”、“IMF_DATE” :
ISO_TH = raw_data[["IMF_VALUE", "BBG_FV", "IMF_DATE"]]
现在,这看起来与文档中的第二行非常相似:
foo = df[['bar', 'baz']]
你ISO_TH
是视图还是副本raw_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"]]
并像以前一样继续。
推荐阅读
- angularjs - 使用延迟加载时的转换拒绝
- python - 如何在python中拆分元组并获取具有列名的数据
- pandas - 更改熊猫中的列索引名称
- linux - 启动后无法在 Parrot 4.10 中挂载 cifs 共享
- python - 调用 Dockerfile 时如何接收输入?
- pandas - 移动 Matplotlib 轴以匹配重叠图
- java - 获取相对于 xy 坐标的鼠标方向
- android - GoogleSignInResult 在生产中返回 null GoogleSignInAccount
- azure-devops - 在 Azure-YAML-Build-Pipeline 中找不到“自动链接此构建中的新工作”选项
- python - 在 macOS 上使用 pyenv 安装 python 3.8 失败