TypeError: ufunc add не может использовать операнды с типами dtype (' - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь установить модель ARIMA для некоторых данных, для этого я использовал 'autocorrelation_plot ()' со своими временными рядами.Однако это приводит к ошибке в заголовке.

У меня есть таблица атрибутов, состоящая, среди прочего, из полей даты и времени.Я извлек их (после преобразования таблицы атрибутов в пустую таблицу), поместил их в переменную datetime и добавил их все в список:


   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] ошибка ..., напрасно.

Минимальный воспроизводимый пример:


  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


Снимок экрана результатов: результаты

1 Ответ

0 голосов
/ 19 июня 2019

Я нашел решение, оно может выглядеть варварским, но оно работает!

Я только что "восстановил" pd.Series () с pd.Series у меня было:

data2 = pd.Series(O, A)
autocorrelation_plot(pd.Series(data2))
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...