【发布时间】:2019-06-18 21:30:40
【问题描述】:
我正在尝试为一些数据设置 ARIMA 模型,为此,我在时间序列中使用了“autocorrelation_plot()”。但是它会生成标题中的错误。
我有一个由日期和时间字段组成的属性表。 我提取了它们(在将属性表转换为 numpy 表之后),将它们放在一个“日期时间”变量中,并将它们全部附加到一个列表中:
O,A = [],[]
dt = datetime.strptime(dt1, "%Y/%m/%d %H:%M")
A.append(dt)
然后我尝试创建时间序列并打印它们以确保结果:
data2 = pd.Series(A, O)
print data2
结果令人满意,直到我决定自动关联:
自相关命令:
autocorrelation_plot(data2)
执行此命令后,返回:
TypeError: ufunc add 不能使用类型为 dtype('M8[ns]') 和 dtype('M8[ns]') 的操作数
我猜这是由于 datetime.strptime 转换为 numpy ? 我试图遵循以前问题的一些建议 index.to_pydatetime() , dtype, M8[ns] error ...,徒劳。
最小可重现示例:
from pandas import datetime
from pandas import DataFrame
import pandas as pd
from matplotlib import pyplot as plt
from pandas.tools.plotting import autocorrelation_plot
arr = arcpy.da.TableToNumPyArray(inTable ,("PROVINCE","ZONE_CODE","MEAN", "Datetime","Time"))
arr_length = len(arr)
j = 1
O,A = [],[]
while j<=55: #I have 55 provinces
i = 0
while i<arr_length:
if arr[i][1]== j:
O.append(arr[i][2])
c = str(arr[i][3])
d = str(c[0:4]+"/"+c[5:7]+"/"+c[8:10])
t = str(arr[i][4])
if t=="10":
dt1 = str(d+" 10:00")
else:
dt1 = str(d+" 14:00")
dt = datetime.strptime(dt1, "%Y/%m/%d %H:%M")
A.append(dt)
i = i+1
data2 = pd.Series(A, O)
print data2
autocorrelation_plot(data2)
del A[:]
del O[:]
j += 1
结果截图: results
【问题讨论】:
-
请参阅minimal reproducible example 并确保您的问题中有一段可重现的代码。目前只有随机的sn-ps和最重要的触发错误的位甚至根本没有显示。
-
可以从另一个日期时间中减去一个日期时间来形成一个时间增量,但添加两个日期没有意义(因此没有实现)。 'M8(ns)' 是
'datetime64[ns]'。您可能希望显示回溯,以便更好地了解尝试添加日期的操作类型。 -
我只是想获得回溯 & 我不知道我的代码中尝试添加日期的操作?我将在我的问题中放一个最小的可重现示例
标签: pandas numpy matplotlib arcpy