Я хотел бы построить числовой вывод функции / массива, который имеет ось x даты и времени.
Я использую этот код:
import numpy as np
import pandas as pd
df1 = pd.DataFrame({"x": ["1989-12-31 23:59:12", "1995-12-31 23:59:13", "2009-12-31 23:59:14"], "y": [1, 4, 9]})
df1["date"] = pd.to_datetime(df1.x)
df1.set_index("date", inplace=True)
df1.drop(["x"], axis=1, inplace=True)
И получите с:
df1['derivation'] = np.gradient(df1.y, df1.index)
ошибка:
File "/home/user/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py", line 1775, in gradient
a = -(dx2)/(dx1 * (dx1 + dx2))
TypeError: ufunc multiply cannot use operands with types dtype('<m8[ns]') and dtype('<m8[ns]')
И с:
df1['derivation'] = np.gradient(df1.y, df1.index.to_pydatetime())
Я получаю:
File "/home/user/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py", line 1775, in gradient
a = -(dx2)/(dx1 * (dx1 + dx2))
TypeError: unsupported operand type(s) for *: 'datetime.timedelta' and 'datetime.timedelta'
Как мне предоставить неэквидистантную ось x в качестве аргумента для np.gradient
, чтобы получить правильный результат?