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
进一步说明:
- 没有可复制的集合,就不可能提供进一步的解决方案
- 您可以包含一些数据:How to make good reproducible pandas examples
- 包括用于转换数据的代码:Minimal, Reproducible Example
- 另一种选择是,在不采用
np.log
的情况下生成预测
我正在处理时间序列数据,并已将数字转换为 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
进一步说明:
- 没有可复制的集合,就不可能提供进一步的解决方案
- 您可以包含一些数据:How to make good reproducible pandas examples
- 包括用于转换数据的代码:Minimal, Reproducible Example
- 另一种选择是,在不采用
np.log
的情况下生成预测