从python中的对数差返回自然数

从python中的对数差返回自然数,python,numpy,time-series,difference,logarithm,Python,Numpy,Time Series,Difference,Logarithm,我正在处理时间序列数据,并使用numpy将数字转换为对数差 df['dlog']= np.log(df['columnx']).diff() 然后我用这种转变做出了预测 我怎样才能恢复正常数字? 无需反转转换,因为columnx仍存在于df .diff()计算一个系列元素与另一个系列元素的差异 系列中的元素。 dlog的第一行是NaN。如果没有“基本”编号(例如,np.log(764677)),就无法退回转换 输出: 用np.exp 使用np.exp将对数刻度转换为线性刻度 输出:

我正在处理时间序列数据,并使用
numpy
将数字转换为对数差

df['dlog']= np.log(df['columnx']).diff()
然后我用这种转变做出了预测

我怎样才能恢复正常数字?

  • 无需反转转换,因为
    columnx
    仍存在于
    df
  • .diff()
    计算一个系列元素与另一个系列元素的差异 系列中的元素。
    • dlog
      的第一行是
      NaN
      。如果没有“基本”编号(例如,
      np.log(764677)
      ),就无法退回转换
输出: 用
np.exp
  • 使用
    np.exp
    将对数刻度转换为线性刻度
输出: 进一步说明:
  • 如果没有可复制的集合,就不可能提供进一步的解决方案
    • 您可以包括一些数据:
    • 包括用于转换数据的代码:
  • 另一个选项是,不使用
    np.log

numpy.log
提供一个结果数组,因为它是一个多值函数,没有一个数字。但是,数组中的数字是“正常”的,除了没有正常数值的值,如
Inf
。您是否正在寻找从这些值到
float
的方法?换句话说,你能举一个例子说明你尝试了什么,你得到了什么,你期望得到什么吗?
df = pd.DataFrame({'columnx': [np.random.randint(1_000_000) for _ in range(100)]})
df['dlog'] = np.log(df.columnx).diff()
 columnx      dlog
  764677       NaN
  884574  0.145653
  621005 -0.353767
  408960 -0.417722
  248456 -0.498352
df = pd.DataFrame({'columnx': [np.random.randint(1_000_000) for _ in range(100)]})
df['log'] = np.log(df.columnx)
df['linear'] = np.exp(df.log)
 columnx        log    linear
  412863  12.930871  412863.0
  437565  12.988981  437565.0
  690926  13.445788  690926.0
  198166  12.196860  198166.0
  427894  12.966631  427894.0