Return 从 python 的对数差到自然数

Return to natural numbers from a logarithmic difference in python

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

df['dlog']= np.log(df['columnx']).diff()

然后我用那个变换做了预测。

我怎样才能return到正常的数字?

  • 不需要反转转换,因为 columnx 仍然存在于 df
  • .diff()计算一个Series元素与另一个元素的差异 系列中的元素。
    • dlog的第一行是NaN。如果没有 "base" 数字(例如 np.log(764677)),则无法退回该转换
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

使用 np.exp

撤消 np.log
  • 使用 np.exp 从对数刻度转换为线性刻度。
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

进一步说明:

  • 没有可复制的集合,就不可能提供进一步的解决方案
  • 另一种选择是,在不采用 np.log
  • 的情况下生成预测